In [ ]:
import numpy as np
import pandas as pd
from packaging import version
import time

from sklearn.metrics import confusion_matrix, classification_report
from sklearn.metrics import accuracy_score
from sklearn.metrics import mean_squared_error as MSE
from sklearn.model_selection import train_test_split

import matplotlib.pyplot as plt
import seaborn as sns

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import models, layers
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPool2D, BatchNormalization, Dropout, Flatten, Dense
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping
from tensorflow.keras.preprocessing import image
from tensorflow.keras.utils import to_categorical
import tensorflow.keras.backend as k

%matplotlib inline
np.set_printoptions(precision=3, suppress=True)

print("This notebook requires TensorFlow 2.0 or above")
print("TensorFlow version: ", tf.__version__)
assert version.parse(tf.__version__).release[0] >=2

print("Keras version: ", keras.__version__)
This notebook requires TensorFlow 2.0 or above
TensorFlow version:  2.18.0
Keras version:  3.8.0
In [ ]:
# Loading the cifar10 Dataset
(train_images, train_labels), (test_images, test_labels) = keras.datasets.cifar10.load_data()
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
170498071/170498071 ━━━━━━━━━━━━━━━━━━━━ 14s 0us/step
In [ ]:
# Exploratory Data Analysis
print(f"train images shape`: {train_images.shape}")
print(f"train labels shape: {train_labels.shape}")
print(f"test images shape: {test_images.shape}")
print(f"test labels shape: {test_labels.shape}")
train images shape`: (50000, 32, 32, 3)
train labels shape: (50000, 1)
test images shape: (10000, 32, 32, 3)
test labels shape: (10000, 1)
In [ ]:
# Explore the labels, labeled as a numerical digit that needs conversion
# to an item description
print(f"First 10 training labels: {train_labels[:10]}")
First 10 training labels: [[6]
 [9]
 [9]
 [4]
 [1]
 [1]
 [2]
 [7]
 [8]
 [3]]
In [ ]:
# Data Analysis Functions

def show_random_examples(x, y, p):
    indices = np.random.choice(range(x.shape[0]), 10, replace=False)

    x = x[indices]
    y = y[indices]
    p = p[indices]

    plt.figure(figsize=(10, 5))
    for i in range(10):
        plt.subplot(2, 5, i + 1)
        plt.imshow(x[i])
        plt.xticks([])
        plt.yticks([])
        col = 'green' if np.argmax(y[i]) == np.argmax(p[i]) else 'red'
        plt.xlabel(class_names_preview[np.argmax(p[i])], color=col)
    plt.show()

def get_three_classes(x, y):
    def indices_of(class_id):
        indices, _ = np.where(y == float(class_id))
        return indices

    indices = np.concatenate([indices_of(0), indices_of(1), indices_of(2)], axis=0)

    x = x[indices]
    y = y[indices]

    count = x.shape[0]
    indices = np.random.choice(range(count), count, replace=False)

    x = x[indices]
    y = y[indices]

    y = tf.keras.utils.to_categorical(y)

    return x, y

def plot_history(history):
  losses = history.history['loss']
  accs = history.history['accuracy']
  val_losses = history.history['val_loss']
  val_accs = history.history['val_accuracy']
  epochs = len(losses)

  plt.figure(figsize=(16, 4))
  for i, metrics in enumerate(zip([losses, accs], [val_losses, val_accs], ['Loss', 'Accuracy'])):
    plt.subplot(1, 2, i + 1)
    plt.plot(range(epochs), metrics[0], label='Training {}'.format(metrics[2]))
    plt.plot(range(epochs), metrics[1], label='Validation {}'.format(metrics[2]))
    plt.legend()
  plt.show()

def display_training_curves(training, validation, title, subplot):
  ax = plt.subplot(subplot)
  ax.plot(training)
  ax.plot(validation)
  ax.set_title('model '+ title)
  ax.set_ylabel(title)
  ax.set_xlabel('epoch')
  ax.legend(['training', 'validation'])

def print_validation_report(y_test, predictions):
    print("Classification Report")
    print(classification_report(y_test, predictions))
    print('Accuracy Score: {}'.format(accuracy_score(y_test, predictions)))
    print('Root Mean Square Error: {}'.format(np.sqrt(MSE(y_test, predictions))))


def plot_confusion_matrix(y_true, y_pred):
    mtx = confusion_matrix(y_true, y_pred)
    fig, ax = plt.subplots(figsize=(16,12))
    sns.heatmap(mtx, annot=True, fmt='d', linewidths=.75,  cbar=False, ax=ax,cmap='Blues',linecolor='white')
    #  square=True,
    plt.ylabel('true label')
    plt.xlabel('predicted label')
In [ ]:
train_image_preview, train_label_preview = get_three_classes(train_images, train_labels)
test_image_preview, test_label_preview = get_three_classes(test_images, test_labels)

class_names_preview = ['airplane', 'car', 'bird']
show_random_examples(train_image_preview, train_label_preview, train_label_preview)
No description has been provided for this image
In [ ]:
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog','frog', 'horse' ,'ship' ,'truck']
In [ ]:
image_train_split, image_val_split, label_train_split, label_val_split = train_test_split(train_images, train_labels, test_size=.1, random_state=42, shuffle=True)
print(image_train_split.shape)
print(image_val_split.shape)
print(label_train_split.shape)
print(label_val_split.shape)
(45000, 32, 32, 3)
(5000, 32, 32, 3)
(45000, 1)
(5000, 1)
In [ ]:
image_train_norm = image_train_split / 255.0
image_val_norm = image_val_split / 255.0
image_test_norm = test_images / 255.0
image_train_norm.shape
Out[ ]:
(45000, 32, 32, 3)
In [ ]:
def add_to_data(data, model, history, test_pred):
  if data.get('model') is None:
    # Build initial data for table
    data['model'] = ['initial']
    data['accuracy'] = [f"{history.history['accuracy'][-1]:.3f}"]
    data['val_accuracy'] = [f"{history.history['val_accuracy'][-1]:.3f}"]
    data['test_accuracy'] = [f"{test_pred[1]:.3f}"]
    data['loss'] = [f"{history.history['loss'][-1]:.3f}"]
    data['val_loss'] = [f"{history.history['val_loss'][-1]:.3f}"]
    data['test_loss'] = [f"{test_pred[0]:.3f}"]
    data['time'] = [f"{time_end - time_start:.3f}"]
  else:
    # Add to data table
    data['model'].append(model)
    data['accuracy'].append(f"{history.history['accuracy'][-1]:.3f}")
    data['val_accuracy'].append(f"{history.history['val_accuracy'][-1]:.3f}")
    data['test_accuracy'].append(f"{test_pred[1]:.3f}")
    data['loss'].append(f"{history.history['loss'][-1]:.3f}")
    data['val_loss'].append(f"{history.history['val_loss'][-1]:.3f}")
    data['test_loss'].append(f"{test_pred[0]:.3f}")
    data['time'].append(f"{time_end - time_start:.3f}")
In [ ]:
DNN_data = {}
DNN_nodes = [4,8,16,32,64,128,256,512,1024]

for node in DNN_nodes:
  name = f'DNN_{node}_nodes'
  k.clear_session()
  model = models.Sequential()
  model.add(layers.Input(shape=(32,32,3,)))
  model.add(layers.Dense(units=node, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
  model.add(layers.Flatten())
  model.add(layers.Dense(units=10, activation=tf.nn.softmax))
  keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
  model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
  time_start = time.time()
  history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                      ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
  time_end = time.time()
  preds = model.predict(image_test_norm)
  test_pred = model.evaluate(image_test_norm, test_labels)

  history_dict = history.history
  history_df=pd.DataFrame(history_dict)
  plt.subplots(figsize=(16,12))
  plt.tight_layout()
  display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
  display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
  pred= model.predict(image_test_norm)
  pred=np.argmax(pred, axis=1)
  print_validation_report(test_labels, pred)
  plot_confusion_matrix(test_labels, pred)
  add_to_data(DNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 9ms/step - accuracy: 0.2844 - loss: 2.0112 - val_accuracy: 0.3890 - val_loss: 1.7599
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4079 - loss: 1.7317 - val_accuracy: 0.3996 - val_loss: 1.7328
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4179 - loss: 1.6966 - val_accuracy: 0.4122 - val_loss: 1.7123
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4324 - loss: 1.6498 - val_accuracy: 0.4090 - val_loss: 1.7132
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 3ms/step - accuracy: 0.4340 - loss: 1.6538 - val_accuracy: 0.4152 - val_loss: 1.7034
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.4445 - loss: 1.6227 - val_accuracy: 0.4120 - val_loss: 1.7016
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 3ms/step - accuracy: 0.4482 - loss: 1.6115 - val_accuracy: 0.4168 - val_loss: 1.6952
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4532 - loss: 1.6003 - val_accuracy: 0.4100 - val_loss: 1.7035
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4532 - loss: 1.5948 - val_accuracy: 0.4150 - val_loss: 1.6872
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.4235 - loss: 1.6649
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.46      0.50      0.48      1000
           1       0.57      0.48      0.52      1000
           2       0.25      0.38      0.30      1000
           3       0.31      0.19      0.23      1000
           4       0.39      0.21      0.27      1000
           5       0.43      0.25      0.32      1000
           6       0.38      0.66      0.48      1000
           7       0.52      0.44      0.48      1000
           8       0.51      0.56      0.53      1000
           9       0.46      0.51      0.48      1000

    accuracy                           0.42     10000
   macro avg       0.43      0.42      0.41     10000
weighted avg       0.43      0.42      0.41     10000

Accuracy Score: 0.4175
Root Mean Square Error: 3.4241787336527865
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.3300 - loss: 1.8983 - val_accuracy: 0.3996 - val_loss: 1.7047
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4278 - loss: 1.6433 - val_accuracy: 0.4272 - val_loss: 1.6412
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4568 - loss: 1.5775 - val_accuracy: 0.4338 - val_loss: 1.6231
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4624 - loss: 1.5543 - val_accuracy: 0.4386 - val_loss: 1.6026
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.4697 - loss: 1.5284 - val_accuracy: 0.4458 - val_loss: 1.6026
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.4768 - loss: 1.5145 - val_accuracy: 0.4526 - val_loss: 1.5949
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4852 - loss: 1.5005 - val_accuracy: 0.4512 - val_loss: 1.5891
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4852 - loss: 1.4872 - val_accuracy: 0.4480 - val_loss: 1.5821
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4533 - loss: 1.5455
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.55      0.47      0.50      1000
           1       0.54      0.57      0.56      1000
           2       0.36      0.27      0.31      1000
           3       0.35      0.18      0.24      1000
           4       0.33      0.52      0.40      1000
           5       0.38      0.31      0.34      1000
           6       0.45      0.54      0.49      1000
           7       0.53      0.49      0.51      1000
           8       0.50      0.68      0.57      1000
           9       0.55      0.53      0.54      1000

    accuracy                           0.46     10000
   macro avg       0.45      0.46      0.45     10000
weighted avg       0.45      0.46      0.45     10000

Accuracy Score: 0.4553
Root Mean Square Error: 3.1846506872811027
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.3453 - loss: 1.8623 - val_accuracy: 0.4232 - val_loss: 1.6566
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4422 - loss: 1.6149 - val_accuracy: 0.4456 - val_loss: 1.5933
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - accuracy: 0.4639 - loss: 1.5436 - val_accuracy: 0.4488 - val_loss: 1.5765
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.4777 - loss: 1.5077 - val_accuracy: 0.4468 - val_loss: 1.5686
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 8ms/step - accuracy: 0.4855 - loss: 1.4715 - val_accuracy: 0.4676 - val_loss: 1.5497
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 3ms/step - accuracy: 0.4963 - loss: 1.4469 - val_accuracy: 0.4640 - val_loss: 1.5303
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5034 - loss: 1.4355 - val_accuracy: 0.4578 - val_loss: 1.5431
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 7ms/step - accuracy: 0.4760 - loss: 1.4937
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.58      0.41      0.48      1000
           1       0.55      0.65      0.60      1000
           2       0.47      0.21      0.29      1000
           3       0.29      0.41      0.34      1000
           4       0.39      0.43      0.41      1000
           5       0.38      0.44      0.41      1000
           6       0.53      0.50      0.51      1000
           7       0.49      0.54      0.52      1000
           8       0.57      0.65      0.61      1000
           9       0.60      0.49      0.54      1000

    accuracy                           0.47     10000
   macro avg       0.49      0.47      0.47     10000
weighted avg       0.49      0.47      0.47     10000

Accuracy Score: 0.4727
Root Mean Square Error: 3.100709596205359
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.3403 - loss: 1.9643 - val_accuracy: 0.4358 - val_loss: 1.6217
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4613 - loss: 1.5630 - val_accuracy: 0.4680 - val_loss: 1.5509
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.4838 - loss: 1.4885 - val_accuracy: 0.4664 - val_loss: 1.5274
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.4970 - loss: 1.4594 - val_accuracy: 0.4668 - val_loss: 1.5274
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4764 - loss: 1.4792
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.53      0.50      0.51      1000
           1       0.61      0.57      0.59      1000
           2       0.37      0.24      0.29      1000
           3       0.35      0.26      0.30      1000
           4       0.37      0.49      0.42      1000
           5       0.43      0.35      0.39      1000
           6       0.47      0.60      0.53      1000
           7       0.56      0.48      0.52      1000
           8       0.49      0.72      0.58      1000
           9       0.55      0.55      0.55      1000

    accuracy                           0.48     10000
   macro avg       0.47      0.48      0.47     10000
weighted avg       0.47      0.48      0.47     10000

Accuracy Score: 0.4758
Root Mean Square Error: 3.1527606950100098
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.3584 - loss: 1.8810 - val_accuracy: 0.4638 - val_loss: 1.5545
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 4ms/step - accuracy: 0.4789 - loss: 1.5002 - val_accuracy: 0.4702 - val_loss: 1.5406
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5056 - loss: 1.4350 - val_accuracy: 0.4802 - val_loss: 1.5108
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.5173 - loss: 1.4036 - val_accuracy: 0.4786 - val_loss: 1.4995
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5276 - loss: 1.3727 - val_accuracy: 0.4858 - val_loss: 1.5004
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5404 - loss: 1.3444 - val_accuracy: 0.4816 - val_loss: 1.4972
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5481 - loss: 1.3187 - val_accuracy: 0.4846 - val_loss: 1.5002
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4834 - loss: 1.4705
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.59      0.54      0.56      1000
           1       0.63      0.55      0.59      1000
           2       0.37      0.25      0.30      1000
           3       0.36      0.25      0.29      1000
           4       0.33      0.52      0.41      1000
           5       0.47      0.28      0.35      1000
           6       0.47      0.62      0.53      1000
           7       0.47      0.60      0.53      1000
           8       0.61      0.62      0.61      1000
           9       0.56      0.59      0.58      1000

    accuracy                           0.48     10000
   macro avg       0.49      0.48      0.47     10000
weighted avg       0.49      0.48      0.47     10000

Accuracy Score: 0.4815
Root Mean Square Error: 3.0739551070241737
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 8ms/step - accuracy: 0.3500 - loss: 2.1141 - val_accuracy: 0.4504 - val_loss: 1.5803
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.4799 - loss: 1.5043 - val_accuracy: 0.4676 - val_loss: 1.5243
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5025 - loss: 1.4369 - val_accuracy: 0.4800 - val_loss: 1.5154
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.5120 - loss: 1.4046 - val_accuracy: 0.4778 - val_loss: 1.5011
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.5271 - loss: 1.3701 - val_accuracy: 0.4862 - val_loss: 1.4925
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.5439 - loss: 1.3357 - val_accuracy: 0.4662 - val_loss: 1.5475
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.5550 - loss: 1.2974 - val_accuracy: 0.4752 - val_loss: 1.5116
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4786 - loss: 1.5006
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.63      0.37      0.47      1000
           1       0.51      0.68      0.58      1000
           2       0.44      0.26      0.33      1000
           3       0.29      0.49      0.36      1000
           4       0.43      0.35      0.39      1000
           5       0.43      0.28      0.34      1000
           6       0.49      0.57      0.53      1000
           7       0.53      0.54      0.54      1000
           8       0.58      0.64      0.61      1000
           9       0.54      0.56      0.55      1000

    accuracy                           0.47     10000
   macro avg       0.49      0.47      0.47     10000
weighted avg       0.49      0.47      0.47     10000

Accuracy Score: 0.4748
Root Mean Square Error: 3.1676647549890755
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.3559 - loss: 2.2746 - val_accuracy: 0.4646 - val_loss: 1.5617
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.4821 - loss: 1.4977 - val_accuracy: 0.4768 - val_loss: 1.5249
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5057 - loss: 1.4355 - val_accuracy: 0.4802 - val_loss: 1.5163
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5209 - loss: 1.3890 - val_accuracy: 0.4684 - val_loss: 1.5360
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5260 - loss: 1.3659 - val_accuracy: 0.4858 - val_loss: 1.5137
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5465 - loss: 1.3310 - val_accuracy: 0.4740 - val_loss: 1.5212
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.5514 - loss: 1.3051 - val_accuracy: 0.4910 - val_loss: 1.5105
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 9ms/step - accuracy: 0.5661 - loss: 1.2682 - val_accuracy: 0.4962 - val_loss: 1.4969
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 7ms/step - accuracy: 0.5713 - loss: 1.2461 - val_accuracy: 0.4886 - val_loss: 1.5199
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5835 - loss: 1.2092 - val_accuracy: 0.4886 - val_loss: 1.5086
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.4889 - loss: 1.5081
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.48      0.58      0.52      1000
           1       0.62      0.53      0.57      1000
           2       0.43      0.29      0.35      1000
           3       0.36      0.28      0.32      1000
           4       0.42      0.40      0.41      1000
           5       0.42      0.41      0.41      1000
           6       0.51      0.55      0.53      1000
           7       0.53      0.53      0.53      1000
           8       0.53      0.65      0.58      1000
           9       0.50      0.61      0.55      1000

    accuracy                           0.48     10000
   macro avg       0.48      0.48      0.48     10000
weighted avg       0.48      0.48      0.48     10000

Accuracy Score: 0.4838
Root Mean Square Error: 3.2677821224800163
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 14ms/step - accuracy: 0.3561 - loss: 2.6334 - val_accuracy: 0.4524 - val_loss: 1.5744
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 17s 11ms/step - accuracy: 0.4805 - loss: 1.5022 - val_accuracy: 0.4680 - val_loss: 1.5452
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 13ms/step - accuracy: 0.5026 - loss: 1.4396 - val_accuracy: 0.4740 - val_loss: 1.5291
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 11ms/step - accuracy: 0.5195 - loss: 1.3916 - val_accuracy: 0.4758 - val_loss: 1.5246
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.5305 - loss: 1.3709 - val_accuracy: 0.4802 - val_loss: 1.5127
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.5445 - loss: 1.3236 - val_accuracy: 0.4744 - val_loss: 1.5465
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 12ms/step - accuracy: 0.5559 - loss: 1.2887 - val_accuracy: 0.4912 - val_loss: 1.5051
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.5706 - loss: 1.2633 - val_accuracy: 0.4838 - val_loss: 1.5274
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.5812 - loss: 1.2233 - val_accuracy: 0.4882 - val_loss: 1.5321
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.4890 - loss: 1.5230
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.46      0.54      0.50      1000
           1       0.59      0.55      0.57      1000
           2       0.35      0.40      0.37      1000
           3       0.36      0.29      0.32      1000
           4       0.51      0.29      0.37      1000
           5       0.44      0.34      0.38      1000
           6       0.48      0.62      0.54      1000
           7       0.52      0.55      0.53      1000
           8       0.55      0.67      0.60      1000
           9       0.54      0.58      0.56      1000

    accuracy                           0.48     10000
   macro avg       0.48      0.48      0.48     10000
weighted avg       0.48      0.48      0.48     10000

Accuracy Score: 0.4823
Root Mean Square Error: 3.2549039924397154
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 21s 24ms/step - accuracy: 0.3551 - loss: 2.8383 - val_accuracy: 0.4454 - val_loss: 1.5665
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 19ms/step - accuracy: 0.4760 - loss: 1.5199 - val_accuracy: 0.4460 - val_loss: 1.5730
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 21s 20ms/step - accuracy: 0.4906 - loss: 1.4648 - val_accuracy: 0.4762 - val_loss: 1.5281
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 20ms/step - accuracy: 0.5171 - loss: 1.4026 - val_accuracy: 0.4776 - val_loss: 1.5063
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 19ms/step - accuracy: 0.5257 - loss: 1.3659 - val_accuracy: 0.4632 - val_loss: 1.5633
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 19ms/step - accuracy: 0.5387 - loss: 1.3473 - val_accuracy: 0.4864 - val_loss: 1.5207
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.5511 - loss: 1.3077 - val_accuracy: 0.4820 - val_loss: 1.5135
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 21s 20ms/step - accuracy: 0.5606 - loss: 1.2781 - val_accuracy: 0.4932 - val_loss: 1.5050
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 19ms/step - accuracy: 0.5760 - loss: 1.2368 - val_accuracy: 0.4844 - val_loss: 1.5259
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 19ms/step - accuracy: 0.5832 - loss: 1.2101 - val_accuracy: 0.4880 - val_loss: 1.5375
313/313 ━━━━━━━━━━━━━━━━━━━━ 5s 9ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 6ms/step - accuracy: 0.4812 - loss: 1.5315
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.56      0.49      0.52      1000
           1       0.55      0.64      0.59      1000
           2       0.35      0.42      0.38      1000
           3       0.34      0.33      0.33      1000
           4       0.43      0.33      0.37      1000
           5       0.47      0.23      0.31      1000
           6       0.47      0.61      0.53      1000
           7       0.56      0.52      0.54      1000
           8       0.51      0.67      0.58      1000
           9       0.56      0.53      0.54      1000

    accuracy                           0.48     10000
   macro avg       0.48      0.48      0.47     10000
weighted avg       0.48      0.48      0.47     10000

Accuracy Score: 0.4778
Root Mean Square Error: 3.1756574122534063
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
DNN_data_df = pd.DataFrame(DNN_data)
DNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.453 0.415 0.417 1.597 1.687 1.670 30.760
1 DNN_8_nodes 0.484 0.448 0.455 1.491 1.582 1.554 28.051
2 DNN_16_nodes 0.499 0.458 0.473 1.440 1.543 1.502 38.472
3 DNN_32_nodes 0.496 0.467 0.476 1.457 1.527 1.489 19.331
4 DNN_64_nodes 0.543 0.485 0.481 1.329 1.500 1.480 32.487
5 DNN_128_nodes 0.547 0.475 0.475 1.319 1.512 1.507 36.486
6 DNN_256_nodes 0.579 0.489 0.484 1.228 1.509 1.514 65.084
7 DNN_512_nodes 0.577 0.488 0.482 1.236 1.532 1.537 90.682
8 DNN_1024_nodes 0.580 0.488 0.478 1.223 1.537 1.536 187.932
In [ ]:
CNN_data = {}
CNN_filters = [4,8,16,32,64,128,256,512,1024]

for filter in CNN_filters:
  name = f'CNN_{filter}_nodes'
  k.clear_session()
  model = models.Sequential()
  model.add(layers.Input(shape=(32,32,3,)))
  model.add(layers.Conv2D(filters=filter, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
  model.add(layers.Flatten())
  model.add(layers.Dense(units=10, activation=tf.nn.softmax))
  keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
  model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
  time_start = time.time()
  history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                      ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
  time_end = time.time()
  preds = model.predict(image_test_norm)
  test_pred = model.evaluate(image_test_norm, test_labels)

  history_dict = history.history
  history_df=pd.DataFrame(history_dict)
  plt.subplots(figsize=(16,12))
  plt.tight_layout()
  display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
  display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
  pred= model.predict(image_test_norm)
  pred=np.argmax(pred, axis=1)
  print_validation_report(test_labels, pred)
  plot_confusion_matrix(test_labels, pred)
  add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.3306 - loss: 1.8806 - val_accuracy: 0.4228 - val_loss: 1.6452
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4461 - loss: 1.5875 - val_accuracy: 0.4482 - val_loss: 1.5620
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.4770 - loss: 1.5092 - val_accuracy: 0.4552 - val_loss: 1.5465
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.4895 - loss: 1.4652 - val_accuracy: 0.4580 - val_loss: 1.5048
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5103 - loss: 1.4070 - val_accuracy: 0.4780 - val_loss: 1.4700
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 3ms/step - accuracy: 0.5172 - loss: 1.3792 - val_accuracy: 0.4764 - val_loss: 1.4635
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 3ms/step - accuracy: 0.5234 - loss: 1.3609 - val_accuracy: 0.4894 - val_loss: 1.4325
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5377 - loss: 1.3313 - val_accuracy: 0.4868 - val_loss: 1.4389
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5380 - loss: 1.3216 - val_accuracy: 0.4706 - val_loss: 1.5098
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4786 - loss: 1.5131
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.54      0.55      0.55      1000
           1       0.51      0.70      0.59      1000
           2       0.37      0.33      0.35      1000
           3       0.40      0.22      0.28      1000
           4       0.39      0.51      0.44      1000
           5       0.57      0.21      0.30      1000
           6       0.48      0.61      0.54      1000
           7       0.58      0.42      0.49      1000
           8       0.53      0.65      0.58      1000
           9       0.46      0.57      0.51      1000

    accuracy                           0.48     10000
   macro avg       0.48      0.48      0.46     10000
weighted avg       0.48      0.48      0.46     10000

Accuracy Score: 0.4772
Root Mean Square Error: 3.255610541818539
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.3471 - loss: 1.8380 - val_accuracy: 0.4698 - val_loss: 1.4977
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5055 - loss: 1.4008 - val_accuracy: 0.5022 - val_loss: 1.4039
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5534 - loss: 1.2825 - val_accuracy: 0.5352 - val_loss: 1.3181
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5763 - loss: 1.2164 - val_accuracy: 0.5330 - val_loss: 1.3188
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5945 - loss: 1.1705 - val_accuracy: 0.5522 - val_loss: 1.2825
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6105 - loss: 1.1236 - val_accuracy: 0.5324 - val_loss: 1.3119
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 3ms/step - accuracy: 0.6200 - loss: 1.1022 - val_accuracy: 0.5556 - val_loss: 1.2711
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6268 - loss: 1.0741 - val_accuracy: 0.5586 - val_loss: 1.2730
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6401 - loss: 1.0410 - val_accuracy: 0.5644 - val_loss: 1.2549
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6464 - loss: 1.0241 - val_accuracy: 0.5634 - val_loss: 1.2457
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6552 - loss: 1.0097 - val_accuracy: 0.5660 - val_loss: 1.2505
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 3ms/step - accuracy: 0.6557 - loss: 1.0050 - val_accuracy: 0.5634 - val_loss: 1.2497
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 3ms/step - accuracy: 0.6609 - loss: 0.9766 - val_accuracy: 0.5750 - val_loss: 1.2280
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6669 - loss: 0.9589 - val_accuracy: 0.5396 - val_loss: 1.3195
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6707 - loss: 0.9613 - val_accuracy: 0.5520 - val_loss: 1.2947
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.5589 - loss: 1.2745
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.61      0.62      0.62      1000
           1       0.73      0.66      0.69      1000
           2       0.47      0.32      0.38      1000
           3       0.41      0.30      0.34      1000
           4       0.35      0.74      0.47      1000
           5       0.58      0.35      0.44      1000
           6       0.54      0.61      0.57      1000
           7       0.73      0.52      0.60      1000
           8       0.68      0.75      0.71      1000
           9       0.65      0.66      0.66      1000

    accuracy                           0.55     10000
   macro avg       0.58      0.55      0.55     10000
weighted avg       0.58      0.55      0.55     10000

Accuracy Score: 0.553
Root Mean Square Error: 2.726554602424092
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.3850 - loss: 1.7462 - val_accuracy: 0.5286 - val_loss: 1.3383
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5634 - loss: 1.2641 - val_accuracy: 0.5628 - val_loss: 1.2617
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6075 - loss: 1.1450 - val_accuracy: 0.5556 - val_loss: 1.2809
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6289 - loss: 1.0844 - val_accuracy: 0.5726 - val_loss: 1.2157
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6517 - loss: 1.0237 - val_accuracy: 0.5878 - val_loss: 1.1967
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 3ms/step - accuracy: 0.6667 - loss: 0.9782 - val_accuracy: 0.5894 - val_loss: 1.1895
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 3ms/step - accuracy: 0.6714 - loss: 0.9515 - val_accuracy: 0.5920 - val_loss: 1.1845
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6928 - loss: 0.9077 - val_accuracy: 0.5926 - val_loss: 1.1797
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7004 - loss: 0.8827 - val_accuracy: 0.5646 - val_loss: 1.2773
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 3ms/step - accuracy: 0.7070 - loss: 0.8559 - val_accuracy: 0.5990 - val_loss: 1.2024
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.7208 - loss: 0.8238 - val_accuracy: 0.5970 - val_loss: 1.1889
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.7270 - loss: 0.8018 - val_accuracy: 0.5854 - val_loss: 1.2354
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.5833 - loss: 1.2379
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.51      0.78      0.61      1000
           1       0.72      0.71      0.71      1000
           2       0.39      0.48      0.43      1000
           3       0.42      0.44      0.43      1000
           4       0.57      0.39      0.46      1000
           5       0.54      0.40      0.46      1000
           6       0.68      0.73      0.71      1000
           7       0.67      0.59      0.63      1000
           8       0.65      0.70      0.67      1000
           9       0.73      0.56      0.63      1000

    accuracy                           0.58     10000
   macro avg       0.59      0.58      0.57     10000
weighted avg       0.59      0.58      0.57     10000

Accuracy Score: 0.5766
Root Mean Square Error: 2.8785760368626705
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.3981 - loss: 1.7102 - val_accuracy: 0.5412 - val_loss: 1.3161
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5718 - loss: 1.2363 - val_accuracy: 0.5620 - val_loss: 1.2549
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6189 - loss: 1.1003 - val_accuracy: 0.5758 - val_loss: 1.2161
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6516 - loss: 1.0182 - val_accuracy: 0.5864 - val_loss: 1.1980
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6840 - loss: 0.9215 - val_accuracy: 0.6092 - val_loss: 1.1338
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7107 - loss: 0.8501 - val_accuracy: 0.6166 - val_loss: 1.1378
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.7348 - loss: 0.7863 - val_accuracy: 0.6036 - val_loss: 1.1718
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.7484 - loss: 0.7418 - val_accuracy: 0.6024 - val_loss: 1.1977
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.6002 - loss: 1.1987
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.69      0.58      0.63      1000
           1       0.57      0.87      0.69      1000
           2       0.58      0.33      0.42      1000
           3       0.45      0.37      0.41      1000
           4       0.51      0.57      0.53      1000
           5       0.47      0.60      0.53      1000
           6       0.73      0.69      0.71      1000
           7       0.59      0.74      0.65      1000
           8       0.74      0.68      0.71      1000
           9       0.73      0.55      0.63      1000

    accuracy                           0.60     10000
   macro avg       0.61      0.60      0.59     10000
weighted avg       0.61      0.60      0.59     10000

Accuracy Score: 0.5968
Root Mean Square Error: 2.762571266049077
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.3987 - loss: 1.7446 - val_accuracy: 0.5262 - val_loss: 1.3290
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5876 - loss: 1.1935 - val_accuracy: 0.5324 - val_loss: 1.3221
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.6423 - loss: 1.0555 - val_accuracy: 0.6044 - val_loss: 1.1315
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6811 - loss: 0.9305 - val_accuracy: 0.6138 - val_loss: 1.1241
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.7143 - loss: 0.8390 - val_accuracy: 0.6068 - val_loss: 1.1373
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7427 - loss: 0.7605 - val_accuracy: 0.6206 - val_loss: 1.1330
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7731 - loss: 0.6736 - val_accuracy: 0.5874 - val_loss: 1.2163
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 4ms/step - accuracy: 0.7924 - loss: 0.6258 - val_accuracy: 0.6186 - val_loss: 1.1588
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.6197 - loss: 1.1676
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.62      0.71      0.66      1000
           1       0.66      0.82      0.73      1000
           2       0.44      0.49      0.46      1000
           3       0.43      0.46      0.44      1000
           4       0.65      0.45      0.53      1000
           5       0.57      0.47      0.52      1000
           6       0.64      0.80      0.71      1000
           7       0.76      0.63      0.69      1000
           8       0.68      0.74      0.71      1000
           9       0.78      0.57      0.66      1000

    accuracy                           0.61     10000
   macro avg       0.62      0.61      0.61     10000
weighted avg       0.62      0.61      0.61     10000

Accuracy Score: 0.6142
Root Mean Square Error: 2.7010183264835503
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.4043 - loss: 1.7466 - val_accuracy: 0.5340 - val_loss: 1.3138
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.5867 - loss: 1.1987 - val_accuracy: 0.5400 - val_loss: 1.3182
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.6333 - loss: 1.0680 - val_accuracy: 0.5776 - val_loss: 1.2260
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.6787 - loss: 0.9415 - val_accuracy: 0.6000 - val_loss: 1.1587
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.7249 - loss: 0.8195 - val_accuracy: 0.6140 - val_loss: 1.1580
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7563 - loss: 0.7186 - val_accuracy: 0.5936 - val_loss: 1.2217
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.7868 - loss: 0.6369 - val_accuracy: 0.6076 - val_loss: 1.2009
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.5963 - loss: 1.2332
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.67      0.58      0.62      1000
           1       0.73      0.78      0.75      1000
           2       0.43      0.47      0.45      1000
           3       0.42      0.40      0.41      1000
           4       0.56      0.46      0.50      1000
           5       0.40      0.65      0.50      1000
           6       0.80      0.56      0.66      1000
           7       0.67      0.66      0.67      1000
           8       0.73      0.73      0.73      1000
           9       0.72      0.68      0.70      1000

    accuracy                           0.60     10000
   macro avg       0.61      0.60      0.60     10000
weighted avg       0.61      0.60      0.60     10000

Accuracy Score: 0.5952
Root Mean Square Error: 2.6395643579954626
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 16ms/step - accuracy: 0.4029 - loss: 1.7842 - val_accuracy: 0.5284 - val_loss: 1.3454
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 8ms/step - accuracy: 0.5756 - loss: 1.2207 - val_accuracy: 0.5444 - val_loss: 1.2917
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.6392 - loss: 1.0411 - val_accuracy: 0.5940 - val_loss: 1.1718
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 7ms/step - accuracy: 0.6918 - loss: 0.9045 - val_accuracy: 0.5996 - val_loss: 1.1806
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.7359 - loss: 0.7665 - val_accuracy: 0.6212 - val_loss: 1.1602
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 9ms/step - accuracy: 0.7804 - loss: 0.6553 - val_accuracy: 0.6094 - val_loss: 1.2397
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 7ms/step - accuracy: 0.8169 - loss: 0.5554 - val_accuracy: 0.6106 - val_loss: 1.2469
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.6060 - loss: 1.2703
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.63      0.63      0.63      1000
           1       0.75      0.73      0.74      1000
           2       0.42      0.48      0.45      1000
           3       0.42      0.39      0.41      1000
           4       0.53      0.57      0.55      1000
           5       0.47      0.54      0.50      1000
           6       0.70      0.72      0.71      1000
           7       0.74      0.61      0.67      1000
           8       0.68      0.77      0.72      1000
           9       0.81      0.58      0.67      1000

    accuracy                           0.60     10000
   macro avg       0.61      0.60      0.60     10000
weighted avg       0.61      0.60      0.60     10000

Accuracy Score: 0.6018
Root Mean Square Error: 2.652753286681594
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 15ms/step - accuracy: 0.4116 - loss: 1.8043 - val_accuracy: 0.5382 - val_loss: 1.3293
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 17s 12ms/step - accuracy: 0.5806 - loss: 1.2061 - val_accuracy: 0.5652 - val_loss: 1.2534
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 12ms/step - accuracy: 0.6383 - loss: 1.0515 - val_accuracy: 0.5780 - val_loss: 1.2384
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 12ms/step - accuracy: 0.6865 - loss: 0.9117 - val_accuracy: 0.6054 - val_loss: 1.1728
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 12ms/step - accuracy: 0.7387 - loss: 0.7619 - val_accuracy: 0.5988 - val_loss: 1.2476
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 12ms/step - accuracy: 0.7849 - loss: 0.6416 - val_accuracy: 0.6004 - val_loss: 1.2663
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.5993 - loss: 1.2715
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.59      0.70      0.64      1000
           1       0.78      0.69      0.73      1000
           2       0.46      0.44      0.45      1000
           3       0.45      0.35      0.40      1000
           4       0.50      0.57      0.53      1000
           5       0.57      0.39      0.46      1000
           6       0.54      0.82      0.65      1000
           7       0.71      0.62      0.66      1000
           8       0.68      0.75      0.71      1000
           9       0.74      0.65      0.69      1000

    accuracy                           0.60     10000
   macro avg       0.60      0.60      0.59     10000
weighted avg       0.60      0.60      0.59     10000

Accuracy Score: 0.5975
Root Mean Square Error: 2.7472895733795517
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 22s 26ms/step - accuracy: 0.3964 - loss: 1.8911 - val_accuracy: 0.5066 - val_loss: 1.4255
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 21ms/step - accuracy: 0.5684 - loss: 1.2362 - val_accuracy: 0.5442 - val_loss: 1.3103
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 21ms/step - accuracy: 0.6174 - loss: 1.1082 - val_accuracy: 0.5664 - val_loss: 1.2600
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 21ms/step - accuracy: 0.6682 - loss: 0.9639 - val_accuracy: 0.5830 - val_loss: 1.2297
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 21ms/step - accuracy: 0.7134 - loss: 0.8359 - val_accuracy: 0.6016 - val_loss: 1.2029
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 20ms/step - accuracy: 0.7544 - loss: 0.7156 - val_accuracy: 0.6004 - val_loss: 1.2565
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 20ms/step - accuracy: 0.7951 - loss: 0.6057 - val_accuracy: 0.5990 - val_loss: 1.3084
313/313 ━━━━━━━━━━━━━━━━━━━━ 4s 9ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 6ms/step - accuracy: 0.5888 - loss: 1.3446
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.63      0.60      0.62      1000
           1       0.81      0.63      0.71      1000
           2       0.42      0.49      0.45      1000
           3       0.40      0.38      0.39      1000
           4       0.55      0.47      0.50      1000
           5       0.40      0.61      0.49      1000
           6       0.72      0.70      0.71      1000
           7       0.73      0.54      0.62      1000
           8       0.69      0.72      0.70      1000
           9       0.68      0.69      0.68      1000

    accuracy                           0.58     10000
   macro avg       0.60      0.58      0.59     10000
weighted avg       0.60      0.58      0.59     10000

Accuracy Score: 0.5831
Root Mean Square Error: 2.709833943251874
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
CNN_data_df = pd.DataFrame(CNN_data)
CNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.536 0.471 0.477 1.328 1.510 1.512 29.283
1 CNN_8_nodes 0.666 0.552 0.553 0.970 1.295 1.296 48.320
2 CNN_16_nodes 0.721 0.585 0.577 0.817 1.235 1.257 40.049
3 CNN_32_nodes 0.740 0.602 0.597 0.760 1.198 1.218 32.941
4 CNN_64_nodes 0.789 0.619 0.614 0.630 1.159 1.193 36.042
5 CNN_128_nodes 0.780 0.608 0.595 0.653 1.201 1.257 33.441
6 CNN_256_nodes 0.806 0.611 0.602 0.572 1.247 1.292 61.605
7 CNN_512_nodes 0.775 0.600 0.598 0.659 1.266 1.291 69.849
8 CNN_1024_nodes 0.789 0.599 0.583 0.619 1.308 1.374 120.000
In [ ]:
DNN_nodes = [4,8,16,32,64,128,256,512,1024]

for node in DNN_nodes:
  name = f'DNN_64_{node}_nodes'
  k.clear_session()
  model = models.Sequential()
  model.add(layers.Input(shape=(32,32,3,)))
  model.add(layers.Dense(units=64, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
  model.add(layers.Dense(units=node, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
  model.add(layers.Flatten())
  model.add(layers.Dense(units=10, activation=tf.nn.softmax))
  keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
  model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
  time_start = time.time()
  history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                      ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
  time_end = time.time()
  preds = model.predict(image_test_norm)
  test_pred = model.evaluate(image_test_norm, test_labels)

  history_dict = history.history
  history_df=pd.DataFrame(history_dict)
  plt.subplots(figsize=(16,12))
  plt.tight_layout()
  display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
  display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
  pred= model.predict(image_test_norm)
  pred=np.argmax(pred, axis=1)
  print_validation_report(test_labels, pred)
  plot_confusion_matrix(test_labels, pred)
  add_to_data(DNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.3199 - loss: 1.9107 - val_accuracy: 0.4070 - val_loss: 1.7060
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 4ms/step - accuracy: 0.4272 - loss: 1.6550 - val_accuracy: 0.4206 - val_loss: 1.6507
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.4479 - loss: 1.5965 - val_accuracy: 0.4366 - val_loss: 1.6328
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.4571 - loss: 1.5759 - val_accuracy: 0.4334 - val_loss: 1.6178
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.4668 - loss: 1.5656 - val_accuracy: 0.4242 - val_loss: 1.6512
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4424 - loss: 1.6039
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.53      0.50      0.51      1000
           1       0.45      0.71      0.55      1000
           2       0.39      0.20      0.26      1000
           3       0.28      0.35      0.31      1000
           4       0.38      0.40      0.39      1000
           5       0.50      0.23      0.32      1000
           6       0.40      0.68      0.50      1000
           7       0.45      0.56      0.50      1000
           8       0.71      0.45      0.55      1000
           9       0.56      0.37      0.45      1000

    accuracy                           0.44     10000
   macro avg       0.46      0.44      0.43     10000
weighted avg       0.46      0.44      0.43     10000

Accuracy Score: 0.4438
Root Mean Square Error: 3.285589749192677
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 13ms/step - accuracy: 0.3351 - loss: 1.8834 - val_accuracy: 0.4342 - val_loss: 1.6300
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.4511 - loss: 1.5847 - val_accuracy: 0.4402 - val_loss: 1.6105
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.4672 - loss: 1.5410 - val_accuracy: 0.4502 - val_loss: 1.5765
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.4834 - loss: 1.5010 - val_accuracy: 0.4572 - val_loss: 1.5636
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.4874 - loss: 1.4810 - val_accuracy: 0.4654 - val_loss: 1.5505
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.4954 - loss: 1.4755 - val_accuracy: 0.4596 - val_loss: 1.5547
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - accuracy: 0.4963 - loss: 1.4571 - val_accuracy: 0.4588 - val_loss: 1.5538
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4748 - loss: 1.5121
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.53      0.50      0.52      1000
           1       0.64      0.48      0.55      1000
           2       0.36      0.34      0.35      1000
           3       0.33      0.19      0.24      1000
           4       0.43      0.31      0.36      1000
           5       0.42      0.39      0.41      1000
           6       0.40      0.73      0.52      1000
           7       0.48      0.57      0.52      1000
           8       0.62      0.58      0.60      1000
           9       0.52      0.61      0.56      1000

    accuracy                           0.47     10000
   macro avg       0.47      0.47      0.46     10000
weighted avg       0.47      0.47      0.46     10000

Accuracy Score: 0.4713
Root Mean Square Error: 3.191786333700926
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 7ms/step - accuracy: 0.3454 - loss: 1.8633 - val_accuracy: 0.4414 - val_loss: 1.6035
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 5ms/step - accuracy: 0.4703 - loss: 1.5364 - val_accuracy: 0.4660 - val_loss: 1.5501
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.4870 - loss: 1.4874 - val_accuracy: 0.4732 - val_loss: 1.5298
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5035 - loss: 1.4518 - val_accuracy: 0.4770 - val_loss: 1.5270
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5047 - loss: 1.4348 - val_accuracy: 0.4734 - val_loss: 1.5327
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - accuracy: 0.5215 - loss: 1.4029 - val_accuracy: 0.4730 - val_loss: 1.5113
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 7ms/step - accuracy: 0.4916 - loss: 1.4694
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.54      0.55      0.55      1000
           1       0.59      0.57      0.58      1000
           2       0.39      0.36      0.37      1000
           3       0.34      0.37      0.36      1000
           4       0.53      0.19      0.28      1000
           5       0.43      0.34      0.38      1000
           6       0.42      0.73      0.53      1000
           7       0.56      0.55      0.55      1000
           8       0.60      0.62      0.61      1000
           9       0.56      0.61      0.58      1000

    accuracy                           0.49     10000
   macro avg       0.50      0.49      0.48     10000
weighted avg       0.50      0.49      0.48     10000

Accuracy Score: 0.4891
Root Mean Square Error: 3.131948275434957
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.3724 - loss: 1.8080 - val_accuracy: 0.4550 - val_loss: 1.5926
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.4810 - loss: 1.5157 - val_accuracy: 0.4738 - val_loss: 1.5335
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5065 - loss: 1.4444 - val_accuracy: 0.4872 - val_loss: 1.5002
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5189 - loss: 1.4110 - val_accuracy: 0.4720 - val_loss: 1.5144
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.5330 - loss: 1.3749 - val_accuracy: 0.4800 - val_loss: 1.5173
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4885 - loss: 1.4866
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.55      0.58      0.57      1000
           1       0.51      0.73      0.60      1000
           2       0.39      0.32      0.35      1000
           3       0.45      0.17      0.25      1000
           4       0.42      0.47      0.45      1000
           5       0.33      0.59      0.43      1000
           6       0.53      0.53      0.53      1000
           7       0.60      0.49      0.54      1000
           8       0.70      0.52      0.60      1000
           9       0.60      0.51      0.55      1000

    accuracy                           0.49     10000
   macro avg       0.51      0.49      0.49     10000
weighted avg       0.51      0.49      0.49     10000

Accuracy Score: 0.4919
Root Mean Square Error: 3.0989191664191567
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 10ms/step - accuracy: 0.3642 - loss: 1.8953 - val_accuracy: 0.4690 - val_loss: 1.5624
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.4872 - loss: 1.5217 - val_accuracy: 0.4712 - val_loss: 1.5264
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4993 - loss: 1.4644 - val_accuracy: 0.4518 - val_loss: 1.5887
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5184 - loss: 1.4180 - val_accuracy: 0.4798 - val_loss: 1.5086
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5380 - loss: 1.3679 - val_accuracy: 0.4908 - val_loss: 1.4983
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.5474 - loss: 1.3370 - val_accuracy: 0.4750 - val_loss: 1.5342
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.5551 - loss: 1.3146 - val_accuracy: 0.4922 - val_loss: 1.5121
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5716 - loss: 1.2900 - val_accuracy: 0.4890 - val_loss: 1.5082
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5797 - loss: 1.2513 - val_accuracy: 0.4842 - val_loss: 1.5326
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 6ms/step - accuracy: 0.4865 - loss: 1.5091
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.48      0.63      0.55      1000
           1       0.62      0.57      0.59      1000
           2       0.38      0.34      0.36      1000
           3       0.33      0.40      0.36      1000
           4       0.40      0.39      0.39      1000
           5       0.41      0.42      0.42      1000
           6       0.55      0.48      0.51      1000
           7       0.59      0.49      0.54      1000
           8       0.59      0.60      0.59      1000
           9       0.61      0.55      0.58      1000

    accuracy                           0.49     10000
   macro avg       0.50      0.49      0.49     10000
weighted avg       0.50      0.49      0.49     10000

Accuracy Score: 0.4881
Root Mean Square Error: 3.129185197459556
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 9ms/step - accuracy: 0.3678 - loss: 1.9430 - val_accuracy: 0.4600 - val_loss: 1.5571
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 7ms/step - accuracy: 0.4867 - loss: 1.5013 - val_accuracy: 0.4764 - val_loss: 1.5275
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5094 - loss: 1.4375 - val_accuracy: 0.4888 - val_loss: 1.4913
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5329 - loss: 1.3827 - val_accuracy: 0.4900 - val_loss: 1.4849
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.5493 - loss: 1.3339 - val_accuracy: 0.4838 - val_loss: 1.5054
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 9ms/step - accuracy: 0.5591 - loss: 1.3077 - val_accuracy: 0.4858 - val_loss: 1.5129
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.4905 - loss: 1.5012
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.43      0.66      0.52      1000
           1       0.53      0.69      0.60      1000
           2       0.39      0.29      0.34      1000
           3       0.37      0.32      0.34      1000
           4       0.38      0.53      0.44      1000
           5       0.50      0.27      0.35      1000
           6       0.54      0.49      0.52      1000
           7       0.63      0.50      0.56      1000
           8       0.65      0.57      0.61      1000
           9       0.56      0.56      0.56      1000

    accuracy                           0.49     10000
   macro avg       0.50      0.49      0.48     10000
weighted avg       0.50      0.49      0.48     10000

Accuracy Score: 0.4895
Root Mean Square Error: 3.2140939625343874
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 13ms/step - accuracy: 0.3678 - loss: 1.9951 - val_accuracy: 0.4700 - val_loss: 1.5529
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.4970 - loss: 1.4873 - val_accuracy: 0.4806 - val_loss: 1.5199
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.5074 - loss: 1.4324 - val_accuracy: 0.4858 - val_loss: 1.4937
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.5318 - loss: 1.3799 - val_accuracy: 0.4970 - val_loss: 1.4881
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.5495 - loss: 1.3359 - val_accuracy: 0.4910 - val_loss: 1.5168
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.5625 - loss: 1.2943 - val_accuracy: 0.4920 - val_loss: 1.4982
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.5026 - loss: 1.4739
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.52      0.61      0.56      1000
           1       0.60      0.60      0.60      1000
           2       0.41      0.23      0.29      1000
           3       0.38      0.26      0.31      1000
           4       0.47      0.35      0.40      1000
           5       0.37      0.54      0.44      1000
           6       0.46      0.66      0.54      1000
           7       0.57      0.54      0.56      1000
           8       0.66      0.56      0.61      1000
           9       0.56      0.64      0.60      1000

    accuracy                           0.50     10000
   macro avg       0.50      0.50      0.49     10000
weighted avg       0.50      0.50      0.49     10000

Accuracy Score: 0.4999
Root Mean Square Error: 3.1060264004029325
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 16s 19ms/step - accuracy: 0.3823 - loss: 1.9819 - val_accuracy: 0.4628 - val_loss: 1.5730
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 17ms/step - accuracy: 0.4945 - loss: 1.4871 - val_accuracy: 0.4834 - val_loss: 1.5179
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.5201 - loss: 1.4164 - val_accuracy: 0.4844 - val_loss: 1.5020
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 18ms/step - accuracy: 0.5353 - loss: 1.3524 - val_accuracy: 0.4898 - val_loss: 1.5043
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 16ms/step - accuracy: 0.5578 - loss: 1.3084 - val_accuracy: 0.4864 - val_loss: 1.5041
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 16ms/step - accuracy: 0.5752 - loss: 1.2637 - val_accuracy: 0.4880 - val_loss: 1.5320
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.4918 - loss: 1.5106
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.38      0.68      0.49      1000
           1       0.68      0.53      0.60      1000
           2       0.40      0.33      0.36      1000
           3       0.39      0.28      0.33      1000
           4       0.45      0.39      0.42      1000
           5       0.40      0.47      0.43      1000
           6       0.53      0.54      0.54      1000
           7       0.61      0.49      0.54      1000
           8       0.56      0.64      0.59      1000
           9       0.62      0.54      0.58      1000

    accuracy                           0.49     10000
   macro avg       0.50      0.49      0.49     10000
weighted avg       0.50      0.49      0.49     10000

Accuracy Score: 0.4896
Root Mean Square Error: 3.2085199079949622
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 25s 32ms/step - accuracy: 0.3634 - loss: 2.5537 - val_accuracy: 0.4568 - val_loss: 1.5820
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 38s 30ms/step - accuracy: 0.4848 - loss: 1.5105 - val_accuracy: 0.4648 - val_loss: 1.5396
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 21s 30ms/step - accuracy: 0.5142 - loss: 1.4233 - val_accuracy: 0.4848 - val_loss: 1.5259
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 41s 29ms/step - accuracy: 0.5335 - loss: 1.3743 - val_accuracy: 0.4934 - val_loss: 1.4881
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 21s 30ms/step - accuracy: 0.5601 - loss: 1.3099 - val_accuracy: 0.4928 - val_loss: 1.5144
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 29ms/step - accuracy: 0.5669 - loss: 1.2857 - val_accuracy: 0.4840 - val_loss: 1.5106
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 6ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 6ms/step - accuracy: 0.4891 - loss: 1.4926
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.55      0.53      0.54      1000
           1       0.70      0.48      0.57      1000
           2       0.36      0.36      0.36      1000
           3       0.33      0.35      0.34      1000
           4       0.36      0.51      0.42      1000
           5       0.45      0.31      0.36      1000
           6       0.47      0.60      0.53      1000
           7       0.58      0.51      0.54      1000
           8       0.67      0.57      0.62      1000
           9       0.54      0.63      0.58      1000

    accuracy                           0.49     10000
   macro avg       0.50      0.49      0.49     10000
weighted avg       0.50      0.49      0.49     10000

Accuracy Score: 0.4853
Root Mean Square Error: 3.0737924458232375
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
DNN_data_df = pd.DataFrame(DNN_data)
DNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.453 0.415 0.417 1.597 1.687 1.670 30.760
1 DNN_8_nodes 0.484 0.448 0.455 1.491 1.582 1.554 28.051
2 DNN_16_nodes 0.499 0.458 0.473 1.440 1.543 1.502 38.472
3 DNN_32_nodes 0.496 0.467 0.476 1.457 1.527 1.489 19.331
4 DNN_64_nodes 0.543 0.485 0.481 1.329 1.500 1.480 32.487
5 DNN_128_nodes 0.547 0.475 0.475 1.319 1.512 1.507 36.486
6 DNN_256_nodes 0.579 0.489 0.484 1.228 1.509 1.514 65.084
7 DNN_512_nodes 0.577 0.488 0.482 1.236 1.532 1.537 90.682
8 DNN_1024_nodes 0.580 0.488 0.478 1.223 1.537 1.536 187.932
9 DNN_64_4_nodes 0.464 0.424 0.444 1.566 1.651 1.605 27.527
10 DNN_64_8_nodes 0.497 0.459 0.471 1.462 1.554 1.523 43.371
11 DNN_64_16_nodes 0.518 0.473 0.489 1.410 1.511 1.479 37.811
12 DNN_64_32_nodes 0.530 0.480 0.492 1.383 1.517 1.486 29.874
13 DNN_64_64_nodes 0.580 0.484 0.488 1.256 1.533 1.514 54.106
14 DNN_64_128_nodes 0.557 0.486 0.489 1.311 1.513 1.503 44.237
15 DNN_64_256_nodes 0.563 0.492 0.500 1.294 1.498 1.477 61.046
16 DNN_64_512_nodes 0.571 0.488 0.490 1.274 1.532 1.511 95.996
17 DNN_64_1024_nodes 0.566 0.484 0.485 1.285 1.511 1.499 168.276
In [ ]:
CNN_filters = [4,8,16,32,64,128,256,512,1024]

for filter in CNN_filters:
  name = f'CNN_32_{filter}_nodes'
  k.clear_session()
  model = models.Sequential()
  model.add(layers.Input(shape=(32,32,3,)))
  model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
  model.add(layers.Conv2D(filters=filter, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
  model.add(layers.Flatten())
  model.add(layers.Dense(units=10, activation=tf.nn.softmax))
  keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
  model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
  time_start = time.time()
  history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                      ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
  time_end = time.time()
  preds = model.predict(image_test_norm)
  test_pred = model.evaluate(image_test_norm, test_labels)

  history_dict = history.history
  history_df=pd.DataFrame(history_dict)
  plt.subplots(figsize=(16,12))
  plt.tight_layout()
  display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
  display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
  pred= model.predict(image_test_norm)
  pred=np.argmax(pred, axis=1)
  print_validation_report(test_labels, pred)
  plot_confusion_matrix(test_labels, pred)
  add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.2926 - loss: 1.9465 - val_accuracy: 0.4276 - val_loss: 1.5717
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.4405 - loss: 1.5560 - val_accuracy: 0.4550 - val_loss: 1.5173
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.4745 - loss: 1.4802 - val_accuracy: 0.4456 - val_loss: 1.5282
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.4940 - loss: 1.4199 - val_accuracy: 0.4874 - val_loss: 1.4342
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.5365 - loss: 1.3209 - val_accuracy: 0.5074 - val_loss: 1.3683
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5555 - loss: 1.2743 - val_accuracy: 0.5184 - val_loss: 1.3578
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.5621 - loss: 1.2476 - val_accuracy: 0.5260 - val_loss: 1.3184
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5735 - loss: 1.2200 - val_accuracy: 0.5420 - val_loss: 1.2996
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.5886 - loss: 1.1832 - val_accuracy: 0.5434 - val_loss: 1.2860
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.5933 - loss: 1.1678 - val_accuracy: 0.5388 - val_loss: 1.3299
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5977 - loss: 1.1529 - val_accuracy: 0.5396 - val_loss: 1.2887
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.5455 - loss: 1.2861
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.61      0.59      0.60      1000
           1       0.74      0.63      0.68      1000
           2       0.42      0.38      0.40      1000
           3       0.38      0.41      0.39      1000
           4       0.46      0.47      0.46      1000
           5       0.44      0.46      0.45      1000
           6       0.70      0.64      0.67      1000
           7       0.54      0.61      0.58      1000
           8       0.65      0.67      0.66      1000
           9       0.58      0.62      0.60      1000

    accuracy                           0.55     10000
   macro avg       0.55      0.55      0.55     10000
weighted avg       0.55      0.55      0.55     10000

Accuracy Score: 0.5479
Root Mean Square Error: 2.9377542443165665
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.3534 - loss: 1.7780 - val_accuracy: 0.3812 - val_loss: 1.7422
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 8ms/step - accuracy: 0.5195 - loss: 1.3467 - val_accuracy: 0.5222 - val_loss: 1.3285
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5594 - loss: 1.2477 - val_accuracy: 0.5540 - val_loss: 1.2446
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.5829 - loss: 1.1954 - val_accuracy: 0.5538 - val_loss: 1.2547
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 6ms/step - accuracy: 0.5953 - loss: 1.1482 - val_accuracy: 0.5788 - val_loss: 1.1945
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 8ms/step - accuracy: 0.6151 - loss: 1.1100 - val_accuracy: 0.5662 - val_loss: 1.2236
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 5ms/step - accuracy: 0.6227 - loss: 1.0725 - val_accuracy: 0.5792 - val_loss: 1.1872
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.6388 - loss: 1.0396 - val_accuracy: 0.5796 - val_loss: 1.1888
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6517 - loss: 1.0054 - val_accuracy: 0.5680 - val_loss: 1.2500
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6561 - loss: 0.9895 - val_accuracy: 0.5840 - val_loss: 1.1800
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.6643 - loss: 0.9578 - val_accuracy: 0.5900 - val_loss: 1.1598
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.6749 - loss: 0.9297 - val_accuracy: 0.5826 - val_loss: 1.2095
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.6811 - loss: 0.9197 - val_accuracy: 0.5888 - val_loss: 1.1979
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.5752 - loss: 1.2261
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.56      0.63      0.59      1000
           1       0.65      0.76      0.70      1000
           2       0.46      0.42      0.44      1000
           3       0.49      0.18      0.27      1000
           4       0.53      0.51      0.52      1000
           5       0.52      0.46      0.49      1000
           6       0.58      0.74      0.65      1000
           7       0.62      0.69      0.65      1000
           8       0.59      0.76      0.66      1000
           9       0.65      0.60      0.63      1000

    accuracy                           0.57     10000
   macro avg       0.57      0.57      0.56     10000
weighted avg       0.57      0.57      0.56     10000

Accuracy Score: 0.5739
Root Mean Square Error: 2.889498226336192
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - accuracy: 0.3485 - loss: 1.7982 - val_accuracy: 0.5050 - val_loss: 1.3838
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5456 - loss: 1.3005 - val_accuracy: 0.5718 - val_loss: 1.2288
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.6074 - loss: 1.1254 - val_accuracy: 0.5858 - val_loss: 1.1691
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6478 - loss: 1.0171 - val_accuracy: 0.6134 - val_loss: 1.0953
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6775 - loss: 0.9382 - val_accuracy: 0.6114 - val_loss: 1.1084
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.6923 - loss: 0.8858 - val_accuracy: 0.6150 - val_loss: 1.1085
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7126 - loss: 0.8296 - val_accuracy: 0.6232 - val_loss: 1.0866
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7286 - loss: 0.7838 - val_accuracy: 0.6212 - val_loss: 1.0856
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7440 - loss: 0.7399 - val_accuracy: 0.6132 - val_loss: 1.1289
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.6176 - loss: 1.1327
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.65      0.67      0.66      1000
           1       0.67      0.80      0.73      1000
           2       0.41      0.56      0.47      1000
           3       0.47      0.38      0.42      1000
           4       0.57      0.49      0.53      1000
           5       0.57      0.46      0.51      1000
           6       0.66      0.76      0.70      1000
           7       0.70      0.67      0.68      1000
           8       0.79      0.68      0.73      1000
           9       0.70      0.67      0.69      1000

    accuracy                           0.61     10000
   macro avg       0.62      0.61      0.61     10000
weighted avg       0.62      0.61      0.61     10000

Accuracy Score: 0.6141
Root Mean Square Error: 2.663813056503778
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 12ms/step - accuracy: 0.3803 - loss: 1.7237 - val_accuracy: 0.5432 - val_loss: 1.2711
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5948 - loss: 1.1649 - val_accuracy: 0.5830 - val_loss: 1.1737
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.6620 - loss: 0.9802 - val_accuracy: 0.6292 - val_loss: 1.0553
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.7042 - loss: 0.8528 - val_accuracy: 0.6426 - val_loss: 1.0295
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - accuracy: 0.7434 - loss: 0.7532 - val_accuracy: 0.6434 - val_loss: 1.0453
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7764 - loss: 0.6506 - val_accuracy: 0.6180 - val_loss: 1.1308
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.8050 - loss: 0.5708 - val_accuracy: 0.6126 - val_loss: 1.2102
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.6172 - loss: 1.1935
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.64      0.65      0.64      1000
           1       0.61      0.88      0.72      1000
           2       0.53      0.36      0.43      1000
           3       0.44      0.41      0.42      1000
           4       0.60      0.51      0.55      1000
           5       0.51      0.55      0.53      1000
           6       0.72      0.70      0.71      1000
           7       0.68      0.68      0.68      1000
           8       0.71      0.74      0.72      1000
           9       0.67      0.67      0.67      1000

    accuracy                           0.61     10000
   macro avg       0.61      0.61      0.61     10000
weighted avg       0.61      0.61      0.61     10000

Accuracy Score: 0.6147
Root Mean Square Error: 2.6944572737380716
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 8ms/step - accuracy: 0.3672 - loss: 1.8107 - val_accuracy: 0.5382 - val_loss: 1.2919
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5762 - loss: 1.2095 - val_accuracy: 0.5816 - val_loss: 1.1835
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.6504 - loss: 1.0156 - val_accuracy: 0.6140 - val_loss: 1.0852
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.7000 - loss: 0.8778 - val_accuracy: 0.6238 - val_loss: 1.0838
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7475 - loss: 0.7422 - val_accuracy: 0.6320 - val_loss: 1.0899
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.7845 - loss: 0.6309 - val_accuracy: 0.6356 - val_loss: 1.0923
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.8227 - loss: 0.5330 - val_accuracy: 0.6290 - val_loss: 1.2045
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.8537 - loss: 0.4410 - val_accuracy: 0.6104 - val_loss: 1.2915
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.6026 - loss: 1.3122
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.61      0.70      0.65      1000
           1       0.77      0.68      0.72      1000
           2       0.47      0.50      0.48      1000
           3       0.38      0.52      0.44      1000
           4       0.64      0.43      0.51      1000
           5       0.54      0.45      0.49      1000
           6       0.75      0.64      0.69      1000
           7       0.66      0.68      0.67      1000
           8       0.64      0.76      0.70      1000
           9       0.70      0.70      0.70      1000

    accuracy                           0.60     10000
   macro avg       0.62      0.60      0.61     10000
weighted avg       0.62      0.60      0.61     10000

Accuracy Score: 0.605
Root Mean Square Error: 2.711604690953311
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 11ms/step - accuracy: 0.4216 - loss: 1.6331 - val_accuracy: 0.5966 - val_loss: 1.1444
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 8ms/step - accuracy: 0.6462 - loss: 1.0185 - val_accuracy: 0.6394 - val_loss: 1.0210
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.7215 - loss: 0.8046 - val_accuracy: 0.6442 - val_loss: 1.0065
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 8ms/step - accuracy: 0.7924 - loss: 0.6170 - val_accuracy: 0.6612 - val_loss: 0.9980
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 8ms/step - accuracy: 0.8492 - loss: 0.4544 - val_accuracy: 0.6482 - val_loss: 1.1292
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 8ms/step - accuracy: 0.8981 - loss: 0.3131 - val_accuracy: 0.6470 - val_loss: 1.1969
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.6462 - loss: 1.2318
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.64      0.69      0.66      1000
           1       0.81      0.74      0.77      1000
           2       0.54      0.51      0.52      1000
           3       0.41      0.53      0.46      1000
           4       0.63      0.56      0.60      1000
           5       0.63      0.43      0.51      1000
           6       0.72      0.75      0.74      1000
           7       0.69      0.68      0.69      1000
           8       0.70      0.82      0.75      1000
           9       0.74      0.73      0.74      1000

    accuracy                           0.64     10000
   macro avg       0.65      0.64      0.64     10000
weighted avg       0.65      0.64      0.64     10000

Accuracy Score: 0.6449
Root Mean Square Error: 2.560683502504751
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 15ms/step - accuracy: 0.4143 - loss: 1.6843 - val_accuracy: 0.5588 - val_loss: 1.2327
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.6497 - loss: 1.0226 - val_accuracy: 0.6252 - val_loss: 1.0530
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 12ms/step - accuracy: 0.7243 - loss: 0.8112 - val_accuracy: 0.6604 - val_loss: 0.9856
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 11ms/step - accuracy: 0.7898 - loss: 0.6264 - val_accuracy: 0.6534 - val_loss: 1.0468
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.8488 - loss: 0.4606 - val_accuracy: 0.6578 - val_loss: 1.1021
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.6463 - loss: 1.1230
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.69      0.68      0.68      1000
           1       0.80      0.71      0.75      1000
           2       0.46      0.63      0.53      1000
           3       0.44      0.48      0.46      1000
           4       0.62      0.50      0.55      1000
           5       0.57      0.53      0.55      1000
           6       0.77      0.71      0.74      1000
           7       0.70      0.72      0.71      1000
           8       0.77      0.74      0.75      1000
           9       0.71      0.74      0.72      1000

    accuracy                           0.64     10000
   macro avg       0.65      0.64      0.65     10000
weighted avg       0.65      0.64      0.65     10000

Accuracy Score: 0.6425
Root Mean Square Error: 2.5450933185248825
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 22s 25ms/step - accuracy: 0.4384 - loss: 1.6138 - val_accuracy: 0.5676 - val_loss: 1.1782
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 20ms/step - accuracy: 0.6796 - loss: 0.9399 - val_accuracy: 0.6492 - val_loss: 1.0061
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 20ms/step - accuracy: 0.7596 - loss: 0.7059 - val_accuracy: 0.6596 - val_loss: 0.9816
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 19ms/step - accuracy: 0.8379 - loss: 0.4874 - val_accuracy: 0.6606 - val_loss: 1.0353
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 19ms/step - accuracy: 0.9047 - loss: 0.3012 - val_accuracy: 0.6552 - val_loss: 1.2170
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 21ms/step - accuracy: 0.9502 - loss: 0.1675 - val_accuracy: 0.6606 - val_loss: 1.3805
313/313 ━━━━━━━━━━━━━━━━━━━━ 4s 9ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 6ms/step - accuracy: 0.6568 - loss: 1.3964
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.72      0.63      0.67      1000
           1       0.86      0.71      0.78      1000
           2       0.52      0.50      0.51      1000
           3       0.46      0.46      0.46      1000
           4       0.59      0.64      0.61      1000
           5       0.55      0.62      0.58      1000
           6       0.69      0.75      0.72      1000
           7       0.72      0.65      0.68      1000
           8       0.74      0.81      0.77      1000
           9       0.74      0.74      0.74      1000

    accuracy                           0.65     10000
   macro avg       0.66      0.65      0.65     10000
weighted avg       0.66      0.65      0.65     10000

Accuracy Score: 0.6518
Root Mean Square Error: 2.4451789300580846
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 36s 42ms/step - accuracy: 0.4233 - loss: 1.7898 - val_accuracy: 0.5978 - val_loss: 1.1409
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 26s 37ms/step - accuracy: 0.6484 - loss: 1.0133 - val_accuracy: 0.6468 - val_loss: 1.0066
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 25s 36ms/step - accuracy: 0.7221 - loss: 0.8125 - val_accuracy: 0.6482 - val_loss: 1.0196
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 24s 35ms/step - accuracy: 0.7860 - loss: 0.6343 - val_accuracy: 0.6618 - val_loss: 1.0161
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 41s 35ms/step - accuracy: 0.8496 - loss: 0.4554 - val_accuracy: 0.6610 - val_loss: 1.0671
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 41s 35ms/step - accuracy: 0.8986 - loss: 0.3144 - val_accuracy: 0.6514 - val_loss: 1.2289
313/313 ━━━━━━━━━━━━━━━━━━━━ 5s 12ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 9ms/step - accuracy: 0.6497 - loss: 1.2510
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 7ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.74      0.62      0.68      1000
           1       0.78      0.75      0.77      1000
           2       0.61      0.40      0.48      1000
           3       0.41      0.53      0.46      1000
           4       0.52      0.69      0.60      1000
           5       0.61      0.50      0.55      1000
           6       0.69      0.74      0.71      1000
           7       0.74      0.66      0.70      1000
           8       0.73      0.78      0.76      1000
           9       0.71      0.77      0.74      1000

    accuracy                           0.64     10000
   macro avg       0.65      0.64      0.64     10000
weighted avg       0.65      0.64      0.64     10000

Accuracy Score: 0.6448
Root Mean Square Error: 2.4833042503889855
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
name = f'CNN_32_MP'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.MaxPool2D((2, 2),strides=2))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.3734 - loss: 1.7621 - val_accuracy: 0.5194 - val_loss: 1.3883
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.5560 - loss: 1.3003 - val_accuracy: 0.5670 - val_loss: 1.2491
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6047 - loss: 1.1611 - val_accuracy: 0.5704 - val_loss: 1.2069
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 3ms/step - accuracy: 0.6214 - loss: 1.0908 - val_accuracy: 0.6028 - val_loss: 1.1319
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6504 - loss: 1.0274 - val_accuracy: 0.5938 - val_loss: 1.1347
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 3ms/step - accuracy: 0.6643 - loss: 0.9813 - val_accuracy: 0.6216 - val_loss: 1.0976
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.6765 - loss: 0.9474 - val_accuracy: 0.6282 - val_loss: 1.0699
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 3ms/step - accuracy: 0.6898 - loss: 0.9125 - val_accuracy: 0.6302 - val_loss: 1.0671
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.6940 - loss: 0.8941 - val_accuracy: 0.6204 - val_loss: 1.0860
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.7010 - loss: 0.8727 - val_accuracy: 0.6412 - val_loss: 1.0381
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7095 - loss: 0.8442 - val_accuracy: 0.6452 - val_loss: 1.0286
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.7137 - loss: 0.8460 - val_accuracy: 0.6416 - val_loss: 1.0396
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 2s 3ms/step - accuracy: 0.7244 - loss: 0.8114 - val_accuracy: 0.6450 - val_loss: 1.0411
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.6515 - loss: 1.0293
313/313 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.57      0.77      0.65      1000
           1       0.80      0.74      0.77      1000
           2       0.50      0.52      0.51      1000
           3       0.48      0.47      0.47      1000
           4       0.61      0.56      0.58      1000
           5       0.53      0.61      0.57      1000
           6       0.80      0.64      0.71      1000
           7       0.79      0.66      0.72      1000
           8       0.76      0.74      0.75      1000
           9       0.72      0.75      0.73      1000

    accuracy                           0.65     10000
   macro avg       0.66      0.65      0.65     10000
weighted avg       0.66      0.65      0.65     10000

Accuracy Score: 0.6452
Root Mean Square Error: 2.5622646233361612
No description has been provided for this image
No description has been provided for this image
In [ ]:
name = f'CNN_32_MP_256'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.MaxPool2D((2, 2),strides=2))
model.add(layers.Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 11ms/step - accuracy: 0.3902 - loss: 1.6884 - val_accuracy: 0.5372 - val_loss: 1.3323
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.6064 - loss: 1.1329 - val_accuracy: 0.6274 - val_loss: 1.0373
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6714 - loss: 0.9459 - val_accuracy: 0.6440 - val_loss: 1.0170
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.7146 - loss: 0.8347 - val_accuracy: 0.6716 - val_loss: 0.9347
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7454 - loss: 0.7457 - val_accuracy: 0.6974 - val_loss: 0.8848
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 8ms/step - accuracy: 0.7731 - loss: 0.6561 - val_accuracy: 0.6948 - val_loss: 0.9013
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.7996 - loss: 0.5834 - val_accuracy: 0.6578 - val_loss: 1.0386
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.6615 - loss: 1.0447
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.78      0.59      0.67      1000
           1       0.86      0.73      0.79      1000
           2       0.72      0.36      0.48      1000
           3       0.47      0.46      0.46      1000
           4       0.50      0.77      0.60      1000
           5       0.55      0.60      0.58      1000
           6       0.67      0.82      0.74      1000
           7       0.72      0.76      0.74      1000
           8       0.86      0.69      0.77      1000
           9       0.69      0.83      0.75      1000

    accuracy                           0.66     10000
   macro avg       0.68      0.66      0.66     10000
weighted avg       0.68      0.66      0.66     10000

Accuracy Score: 0.661
Root Mean Square Error: 2.4072390824344807
No description has been provided for this image
No description has been provided for this image
In [ ]:
CNN_data_df = pd.DataFrame(CNN_data)
CNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.536 0.471 0.477 1.328 1.510 1.512 29.283
1 CNN_8_nodes 0.666 0.552 0.553 0.970 1.295 1.296 48.320
2 CNN_16_nodes 0.721 0.585 0.577 0.817 1.235 1.257 40.049
3 CNN_32_nodes 0.740 0.602 0.597 0.760 1.198 1.218 32.941
4 CNN_64_nodes 0.789 0.619 0.614 0.630 1.159 1.193 36.042
5 CNN_128_nodes 0.780 0.608 0.595 0.653 1.201 1.257 33.441
6 CNN_256_nodes 0.806 0.611 0.602 0.572 1.247 1.292 61.605
7 CNN_512_nodes 0.775 0.600 0.598 0.659 1.266 1.291 69.849
8 CNN_1024_nodes 0.789 0.599 0.583 0.619 1.308 1.374 120.000
9 CNN_32_4_nodes 0.595 0.540 0.548 1.159 1.289 1.295 50.951
10 CNN_32_8_nodes 0.674 0.589 0.574 0.930 1.198 1.243 78.339
11 CNN_32_16_nodes 0.734 0.613 0.614 0.764 1.129 1.145 44.272
12 CNN_32_32_nodes 0.795 0.613 0.615 0.596 1.210 1.209 37.210
13 CNN_32_64_nodes 0.843 0.610 0.605 0.465 1.291 1.327 44.449
14 CNN_32_128_nodes 0.889 0.647 0.645 0.331 1.197 1.246 55.631
15 CNN_32_256_nodes 0.840 0.658 0.642 0.477 1.102 1.148 55.118
16 CNN_32_512_nodes 0.944 0.661 0.652 0.177 1.381 1.421 113.277
17 CNN_32_1024_nodes 0.888 0.651 0.645 0.336 1.229 1.270 213.050
18 CNN_32_MP 0.721 0.645 0.645 0.814 1.041 1.047 43.365
19 CNN_32_MP_256 0.796 0.658 0.661 0.593 1.039 1.049 54.637
In [ ]:
name = f'CNN_32_DO_256'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.Dropout(0.3))
model.add(layers.Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 18ms/step - accuracy: 0.3570 - loss: 1.9217 - val_accuracy: 0.5184 - val_loss: 1.3602
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 11ms/step - accuracy: 0.5539 - loss: 1.2637 - val_accuracy: 0.5742 - val_loss: 1.2054
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.6356 - loss: 1.0590 - val_accuracy: 0.6204 - val_loss: 1.0819
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.6864 - loss: 0.9071 - val_accuracy: 0.6114 - val_loss: 1.1057
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 12ms/step - accuracy: 0.7209 - loss: 0.8097 - val_accuracy: 0.6370 - val_loss: 1.0577
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 12ms/step - accuracy: 0.7575 - loss: 0.7080 - val_accuracy: 0.6358 - val_loss: 1.0833
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 12ms/step - accuracy: 0.7974 - loss: 0.5917 - val_accuracy: 0.6360 - val_loss: 1.1152
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.6388 - loss: 1.1361
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.69      0.64      0.66      1000
           1       0.73      0.77      0.75      1000
           2       0.52      0.47      0.49      1000
           3       0.50      0.36      0.42      1000
           4       0.59      0.53      0.56      1000
           5       0.58      0.52      0.55      1000
           6       0.61      0.80      0.70      1000
           7       0.66      0.70      0.68      1000
           8       0.74      0.75      0.74      1000
           9       0.63      0.79      0.70      1000

    accuracy                           0.63     10000
   macro avg       0.63      0.63      0.63     10000
weighted avg       0.63      0.63      0.63     10000

Accuracy Score: 0.6322
Root Mean Square Error: 2.631938449128323
No description has been provided for this image
No description has been provided for this image
In [ ]:
name = f'CNN_32_BN_256'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.BatchNormalization())
model.add(layers.Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 16ms/step - accuracy: 0.4527 - loss: 2.0992 - val_accuracy: 0.5832 - val_loss: 1.2242
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 16s 11ms/step - accuracy: 0.7381 - loss: 0.7720 - val_accuracy: 0.5470 - val_loss: 1.5121
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 11ms/step - accuracy: 0.8699 - loss: 0.3961 - val_accuracy: 0.6006 - val_loss: 1.3750
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 8s 11ms/step - accuracy: 0.9407 - loss: 0.1830 - val_accuracy: 0.6436 - val_loss: 1.6440
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 11ms/step - accuracy: 0.9639 - loss: 0.1111 - val_accuracy: 0.6042 - val_loss: 1.7404
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 11ms/step - accuracy: 0.9614 - loss: 0.1202 - val_accuracy: 0.5972 - val_loss: 2.3747
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.6061 - loss: 2.5419
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.70      0.50      0.58      1000
           1       0.81      0.67      0.73      1000
           2       0.46      0.50      0.48      1000
           3       0.40      0.44      0.42      1000
           4       0.64      0.42      0.50      1000
           5       0.43      0.66      0.52      1000
           6       0.78      0.60      0.68      1000
           7       0.73      0.62      0.67      1000
           8       0.66      0.80      0.72      1000
           9       0.63      0.77      0.69      1000

    accuracy                           0.60     10000
   macro avg       0.62      0.60      0.60     10000
weighted avg       0.62      0.60      0.60     10000

Accuracy Score: 0.5994
Root Mean Square Error: 2.702794849780501
No description has been provided for this image
No description has been provided for this image
In [ ]:
CNN_data_df = pd.DataFrame(CNN_data)
CNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.536 0.471 0.477 1.328 1.510 1.512 29.283
1 CNN_8_nodes 0.666 0.552 0.553 0.970 1.295 1.296 48.320
2 CNN_16_nodes 0.721 0.585 0.577 0.817 1.235 1.257 40.049
3 CNN_32_nodes 0.740 0.602 0.597 0.760 1.198 1.218 32.941
4 CNN_64_nodes 0.789 0.619 0.614 0.630 1.159 1.193 36.042
5 CNN_128_nodes 0.780 0.608 0.595 0.653 1.201 1.257 33.441
6 CNN_256_nodes 0.806 0.611 0.602 0.572 1.247 1.292 61.605
7 CNN_512_nodes 0.775 0.600 0.598 0.659 1.266 1.291 69.849
8 CNN_1024_nodes 0.789 0.599 0.583 0.619 1.308 1.374 120.000
9 CNN_32_4_nodes 0.595 0.540 0.548 1.159 1.289 1.295 50.951
10 CNN_32_8_nodes 0.674 0.589 0.574 0.930 1.198 1.243 78.339
11 CNN_32_16_nodes 0.734 0.613 0.614 0.764 1.129 1.145 44.272
12 CNN_32_32_nodes 0.795 0.613 0.615 0.596 1.210 1.209 37.210
13 CNN_32_64_nodes 0.843 0.610 0.605 0.465 1.291 1.327 44.449
14 CNN_32_128_nodes 0.889 0.647 0.645 0.331 1.197 1.246 55.631
15 CNN_32_256_nodes 0.840 0.658 0.642 0.477 1.102 1.148 55.118
16 CNN_32_512_nodes 0.944 0.661 0.652 0.177 1.381 1.421 113.277
17 CNN_32_1024_nodes 0.888 0.651 0.645 0.336 1.229 1.270 213.050
18 CNN_32_MP 0.721 0.645 0.645 0.814 1.041 1.047 43.365
19 CNN_32_MP_256 0.796 0.658 0.661 0.593 1.039 1.049 54.637
20 CNN_32_DO_256 0.783 0.636 0.632 0.631 1.115 1.149 76.352
21 CNN_32_BN_256 0.952 0.597 0.599 0.148 2.375 2.532 71.470
In [ ]:
name = f'CNN_32_MP_DO_256_MP'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.MaxPool2D((2, 2),strides=2))
model.add(layers.Dropout(0.3))
model.add(layers.Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.MaxPool2D((2, 2),strides=2))
#model.add(layers.Dropout(0.3))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 10ms/step - accuracy: 0.3798 - loss: 1.7219 - val_accuracy: 0.5608 - val_loss: 1.2473
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.6001 - loss: 1.1571 - val_accuracy: 0.6216 - val_loss: 1.0596
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.6544 - loss: 0.9927 - val_accuracy: 0.6640 - val_loss: 0.9591
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.6913 - loss: 0.9001 - val_accuracy: 0.6874 - val_loss: 0.9078
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.7083 - loss: 0.8408 - val_accuracy: 0.6776 - val_loss: 0.9405
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.7390 - loss: 0.7624 - val_accuracy: 0.7040 - val_loss: 0.8484
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7552 - loss: 0.7151 - val_accuracy: 0.7150 - val_loss: 0.8423
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.7647 - loss: 0.6804 - val_accuracy: 0.7190 - val_loss: 0.8187
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.7837 - loss: 0.6341 - val_accuracy: 0.7162 - val_loss: 0.8378
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7966 - loss: 0.5940 - val_accuracy: 0.7244 - val_loss: 0.8107
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.8016 - loss: 0.5682 - val_accuracy: 0.7228 - val_loss: 0.8233
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.8146 - loss: 0.5443 - val_accuracy: 0.7256 - val_loss: 0.8192
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.8185 - loss: 0.5160 - val_accuracy: 0.7128 - val_loss: 0.8686
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.8334 - loss: 0.4780 - val_accuracy: 0.7100 - val_loss: 0.8811
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.7118 - loss: 0.9057
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.79      0.71      0.75      1000
           1       0.88      0.79      0.83      1000
           2       0.62      0.60      0.61      1000
           3       0.43      0.68      0.53      1000
           4       0.66      0.67      0.67      1000
           5       0.68      0.54      0.60      1000
           6       0.76      0.79      0.78      1000
           7       0.80      0.74      0.77      1000
           8       0.82      0.83      0.82      1000
           9       0.85      0.74      0.79      1000

    accuracy                           0.71     10000
   macro avg       0.73      0.71      0.72     10000
weighted avg       0.73      0.71      0.72     10000

Accuracy Score: 0.7094
Root Mean Square Error: 2.154506904143034
No description has been provided for this image
No description has been provided for this image
In [ ]:
name = f'CNN_32_MP_DO_256_MP_DO'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.MaxPool2D((2, 2),strides=2))
model.add(layers.Dropout(0.3))
model.add(layers.Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
model.add(layers.MaxPool2D((2, 2),strides=2))
model.add(layers.Dropout(0.3))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.3676 - loss: 1.7456 - val_accuracy: 0.5672 - val_loss: 1.2196
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5783 - loss: 1.2081 - val_accuracy: 0.6342 - val_loss: 1.0359
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6366 - loss: 1.0514 - val_accuracy: 0.6400 - val_loss: 1.0080
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.6643 - loss: 0.9747 - val_accuracy: 0.6674 - val_loss: 0.9482
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.6821 - loss: 0.9208 - val_accuracy: 0.6718 - val_loss: 0.9189
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.6931 - loss: 0.8792 - val_accuracy: 0.6974 - val_loss: 0.8750
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7137 - loss: 0.8377 - val_accuracy: 0.6842 - val_loss: 0.9065
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7247 - loss: 0.8051 - val_accuracy: 0.7022 - val_loss: 0.8464
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7359 - loss: 0.7709 - val_accuracy: 0.6990 - val_loss: 0.8437
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.7459 - loss: 0.7409 - val_accuracy: 0.7138 - val_loss: 0.8225
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7484 - loss: 0.7269 - val_accuracy: 0.7202 - val_loss: 0.8063
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7543 - loss: 0.7020 - val_accuracy: 0.7314 - val_loss: 0.7781
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.7663 - loss: 0.6750 - val_accuracy: 0.7378 - val_loss: 0.7726
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7706 - loss: 0.6617 - val_accuracy: 0.7284 - val_loss: 0.7793
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.7821 - loss: 0.6391 - val_accuracy: 0.7308 - val_loss: 0.7858
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.7332 - loss: 0.7950
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.78      0.69      0.74      1000
           1       0.84      0.85      0.85      1000
           2       0.66      0.61      0.64      1000
           3       0.57      0.54      0.55      1000
           4       0.69      0.68      0.68      1000
           5       0.70      0.62      0.66      1000
           6       0.81      0.80      0.80      1000
           7       0.74      0.81      0.78      1000
           8       0.67      0.91      0.77      1000
           9       0.84      0.79      0.82      1000

    accuracy                           0.73     10000
   macro avg       0.73      0.73      0.73     10000
weighted avg       0.73      0.73      0.73     10000

Accuracy Score: 0.7304
Root Mean Square Error: 2.2227910383119687
No description has been provided for this image
No description has been provided for this image
In [ ]:
CNN_data_df = pd.DataFrame(CNN_data)
CNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.536 0.471 0.477 1.328 1.510 1.512 29.283
1 CNN_8_nodes 0.666 0.552 0.553 0.970 1.295 1.296 48.320
2 CNN_16_nodes 0.721 0.585 0.577 0.817 1.235 1.257 40.049
3 CNN_32_nodes 0.740 0.602 0.597 0.760 1.198 1.218 32.941
4 CNN_64_nodes 0.789 0.619 0.614 0.630 1.159 1.193 36.042
5 CNN_128_nodes 0.780 0.608 0.595 0.653 1.201 1.257 33.441
6 CNN_256_nodes 0.806 0.611 0.602 0.572 1.247 1.292 61.605
7 CNN_512_nodes 0.775 0.600 0.598 0.659 1.266 1.291 69.849
8 CNN_1024_nodes 0.789 0.599 0.583 0.619 1.308 1.374 120.000
9 CNN_32_4_nodes 0.595 0.540 0.548 1.159 1.289 1.295 50.951
10 CNN_32_8_nodes 0.674 0.589 0.574 0.930 1.198 1.243 78.339
11 CNN_32_16_nodes 0.734 0.613 0.614 0.764 1.129 1.145 44.272
12 CNN_32_32_nodes 0.795 0.613 0.615 0.596 1.210 1.209 37.210
13 CNN_32_64_nodes 0.843 0.610 0.605 0.465 1.291 1.327 44.449
14 CNN_32_128_nodes 0.889 0.647 0.645 0.331 1.197 1.246 55.631
15 CNN_32_256_nodes 0.840 0.658 0.642 0.477 1.102 1.148 55.118
16 CNN_32_512_nodes 0.944 0.661 0.652 0.177 1.381 1.421 113.277
17 CNN_32_1024_nodes 0.888 0.651 0.645 0.336 1.229 1.270 213.050
18 CNN_32_MP 0.721 0.645 0.645 0.814 1.041 1.047 43.365
19 CNN_32_MP_256 0.796 0.658 0.661 0.593 1.039 1.049 54.637
20 CNN_32_DO_256 0.783 0.636 0.632 0.631 1.115 1.149 76.352
21 CNN_32_BN_256 0.952 0.597 0.599 0.148 2.375 2.532 71.470
22 CNN_32_MP_DO_256_MP 0.827 0.710 0.709 0.494 0.881 0.906 74.818
23 CNN_32_MP_DO_256_MP_DO 0.775 0.731 0.730 0.656 0.786 0.792 71.424
In [ ]:
CNN_filters = [4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384]

for filter in CNN_filters:
  name = f'CNN_32_MP_DO_256_MP_DO_{filter}_MP_DO'
  k.clear_session()
  model = models.Sequential()
  model.add(layers.Input(shape=(32,32,3,)))
  model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
  model.add(layers.MaxPool2D((2, 2),strides=2))
  model.add(layers.Dropout(0.3))
  model.add(layers.Conv2D(filters=256, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
  model.add(layers.MaxPool2D((2, 2),strides=2))
  model.add(layers.Dropout(0.3))
  model.add(layers.Conv2D(filters=filter, kernel_size=(3, 3), strides=(1, 1), activation=tf.nn.relu))
  model.add(layers.MaxPool2D((2, 2),strides=2))
  model.add(layers.Dropout(0.3))
  model.add(layers.Flatten())
  model.add(layers.Dense(units=10, activation=tf.nn.softmax))
  keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
  model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
  time_start = time.time()
  history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                      ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
  time_end = time.time()
  preds = model.predict(image_test_norm)
  test_pred = model.evaluate(image_test_norm, test_labels)

  history_dict = history.history
  history_df=pd.DataFrame(history_dict)
  plt.subplots(figsize=(16,12))
  plt.tight_layout()
  display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
  display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
  pred= model.predict(image_test_norm)
  pred=np.argmax(pred, axis=1)
  print_validation_report(test_labels, pred)
  plot_confusion_matrix(test_labels, pred)
  add_to_data(CNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 11ms/step - accuracy: 0.1005 - loss: 2.3026 - val_accuracy: 0.1006 - val_loss: 2.3027
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.0979 - loss: 2.3027 - val_accuracy: 0.0952 - val_loss: 2.3027
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.0961 - loss: 2.3027 - val_accuracy: 0.0972 - val_loss: 2.3028
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.0987 - loss: 2.3026
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.00      0.00      0.00      1000
           1       0.00      0.00      0.00      1000
           2       0.00      0.00      0.00      1000
           3       0.00      0.00      0.00      1000
           4       0.10      1.00      0.18      1000
           5       0.00      0.00      0.00      1000
           6       0.00      0.00      0.00      1000
           7       0.00      0.00      0.00      1000
           8       0.00      0.00      0.00      1000
           9       0.00      0.00      0.00      1000

    accuracy                           0.10     10000
   macro avg       0.01      0.10      0.02     10000
weighted avg       0.01      0.10      0.02     10000

Accuracy Score: 0.1
Root Mean Square Error: 2.9154759474226504
/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 12ms/step - accuracy: 0.1021 - loss: 2.3031 - val_accuracy: 0.0972 - val_loss: 2.3026
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 6ms/step - accuracy: 0.1024 - loss: 2.3027 - val_accuracy: 0.0972 - val_loss: 2.3027
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.0960 - loss: 2.3027 - val_accuracy: 0.0970 - val_loss: 2.3028
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.1036 - loss: 2.3026
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.00      0.00      0.00      1000
           1       0.00      0.00      0.00      1000
           2       0.00      0.00      0.00      1000
           3       0.00      0.00      0.00      1000
           4       0.00      0.00      0.00      1000
           5       0.00      0.00      0.00      1000
           6       0.10      1.00      0.18      1000
           7       0.00      0.00      0.00      1000
           8       0.00      0.00      0.00      1000
           9       0.00      0.00      0.00      1000

    accuracy                           0.10     10000
   macro avg       0.01      0.10      0.02     10000
weighted avg       0.01      0.10      0.02     10000

Accuracy Score: 0.1
Root Mean Square Error: 3.24037034920393
/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
/usr/local/lib/python3.11/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 11ms/step - accuracy: 0.2088 - loss: 2.0878 - val_accuracy: 0.4082 - val_loss: 1.6233
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.3747 - loss: 1.6809 - val_accuracy: 0.4670 - val_loss: 1.4753
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.4224 - loss: 1.5727 - val_accuracy: 0.4834 - val_loss: 1.4442
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4477 - loss: 1.5040 - val_accuracy: 0.5326 - val_loss: 1.3258
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4784 - loss: 1.4363 - val_accuracy: 0.5518 - val_loss: 1.2708
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.4871 - loss: 1.4054 - val_accuracy: 0.5532 - val_loss: 1.2426
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.4975 - loss: 1.3777 - val_accuracy: 0.5704 - val_loss: 1.2120
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5162 - loss: 1.3389 - val_accuracy: 0.5888 - val_loss: 1.1623
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.5189 - loss: 1.3285 - val_accuracy: 0.5862 - val_loss: 1.1828
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5239 - loss: 1.3117 - val_accuracy: 0.5976 - val_loss: 1.1387
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5370 - loss: 1.2930 - val_accuracy: 0.6108 - val_loss: 1.1250
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5455 - loss: 1.2656 - val_accuracy: 0.5950 - val_loss: 1.1681
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.5501 - loss: 1.2594 - val_accuracy: 0.6044 - val_loss: 1.1154
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.5931 - loss: 1.1450
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.72      0.59      0.65      1000
           1       0.74      0.82      0.78      1000
           2       0.44      0.43      0.44      1000
           3       0.39      0.33      0.36      1000
           4       0.47      0.46      0.46      1000
           5       0.62      0.38      0.47      1000
           6       0.48      0.90      0.62      1000
           7       0.75      0.62      0.68      1000
           8       0.68      0.83      0.75      1000
           9       0.83      0.62      0.71      1000

    accuracy                           0.60     10000
   macro avg       0.61      0.60      0.59     10000
weighted avg       0.61      0.60      0.59     10000

Accuracy Score: 0.5972
Root Mean Square Error: 2.5837182508934675
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 12ms/step - accuracy: 0.2463 - loss: 1.9972 - val_accuracy: 0.4440 - val_loss: 1.5436
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4356 - loss: 1.5285 - val_accuracy: 0.5238 - val_loss: 1.2980
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.4958 - loss: 1.3861 - val_accuracy: 0.5738 - val_loss: 1.1807
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5322 - loss: 1.3009 - val_accuracy: 0.5982 - val_loss: 1.1646
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.5529 - loss: 1.2454 - val_accuracy: 0.6124 - val_loss: 1.0952
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5709 - loss: 1.2097 - val_accuracy: 0.6486 - val_loss: 1.0049
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5929 - loss: 1.1500 - val_accuracy: 0.6554 - val_loss: 0.9872
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.5990 - loss: 1.1279 - val_accuracy: 0.6624 - val_loss: 0.9726
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6090 - loss: 1.1007 - val_accuracy: 0.6624 - val_loss: 0.9820
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6197 - loss: 1.0769 - val_accuracy: 0.6632 - val_loss: 0.9541
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6273 - loss: 1.0599 - val_accuracy: 0.6862 - val_loss: 0.9167
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6376 - loss: 1.0261 - val_accuracy: 0.6768 - val_loss: 0.9143
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6404 - loss: 1.0187 - val_accuracy: 0.6882 - val_loss: 0.9102
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6427 - loss: 1.0061 - val_accuracy: 0.7054 - val_loss: 0.8598
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6502 - loss: 0.9872 - val_accuracy: 0.6982 - val_loss: 0.8688
Epoch 16/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6573 - loss: 0.9732 - val_accuracy: 0.6850 - val_loss: 0.9034
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 4ms/step - accuracy: 0.6942 - loss: 0.9189
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.85      0.60      0.71      1000
           1       0.89      0.83      0.86      1000
           2       0.65      0.45      0.53      1000
           3       0.54      0.43      0.48      1000
           4       0.47      0.82      0.60      1000
           5       0.57      0.68      0.62      1000
           6       0.70      0.80      0.74      1000
           7       0.79      0.68      0.73      1000
           8       0.83      0.82      0.82      1000
           9       0.83      0.80      0.81      1000

    accuracy                           0.69     10000
   macro avg       0.71      0.69      0.69     10000
weighted avg       0.71      0.69      0.69     10000

Accuracy Score: 0.6897
Root Mean Square Error: 2.1200943375236867
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 13ms/step - accuracy: 0.2515 - loss: 1.9882 - val_accuracy: 0.4726 - val_loss: 1.5163
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4364 - loss: 1.5272 - val_accuracy: 0.5236 - val_loss: 1.3151
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.4990 - loss: 1.3821 - val_accuracy: 0.5326 - val_loss: 1.3204
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5315 - loss: 1.3068 - val_accuracy: 0.5972 - val_loss: 1.1342
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5595 - loss: 1.2246 - val_accuracy: 0.6114 - val_loss: 1.0963
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.5874 - loss: 1.1611 - val_accuracy: 0.6478 - val_loss: 1.0007
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6107 - loss: 1.1034 - val_accuracy: 0.6742 - val_loss: 0.9496
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6216 - loss: 1.0685 - val_accuracy: 0.6710 - val_loss: 0.9512
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6378 - loss: 1.0320 - val_accuracy: 0.6816 - val_loss: 0.9247
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6423 - loss: 1.0082 - val_accuracy: 0.6780 - val_loss: 0.9082
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6558 - loss: 0.9785 - val_accuracy: 0.6882 - val_loss: 0.8759
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6588 - loss: 0.9675 - val_accuracy: 0.6940 - val_loss: 0.8640
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6683 - loss: 0.9462 - val_accuracy: 0.7158 - val_loss: 0.8305
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6698 - loss: 0.9351 - val_accuracy: 0.7136 - val_loss: 0.8291
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6793 - loss: 0.9156 - val_accuracy: 0.7096 - val_loss: 0.8200
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.7166 - loss: 0.8297
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.75      0.77      0.76      1000
           1       0.86      0.86      0.86      1000
           2       0.67      0.48      0.56      1000
           3       0.50      0.52      0.51      1000
           4       0.59      0.74      0.66      1000
           5       0.66      0.56      0.60      1000
           6       0.66      0.85      0.75      1000
           7       0.81      0.69      0.75      1000
           8       0.81      0.85      0.83      1000
           9       0.84      0.79      0.81      1000

    accuracy                           0.71     10000
   macro avg       0.72      0.71      0.71     10000
weighted avg       0.72      0.71      0.71     10000

Accuracy Score: 0.7108
Root Mean Square Error: 2.144201483070096
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 14s 13ms/step - accuracy: 0.2833 - loss: 1.9199 - val_accuracy: 0.5162 - val_loss: 1.3477
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 13s 7ms/step - accuracy: 0.5056 - loss: 1.3863 - val_accuracy: 0.5726 - val_loss: 1.1730
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.5602 - loss: 1.2294 - val_accuracy: 0.6178 - val_loss: 1.0849
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - accuracy: 0.5998 - loss: 1.1306 - val_accuracy: 0.6460 - val_loss: 1.0043
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6269 - loss: 1.0616 - val_accuracy: 0.6760 - val_loss: 0.9296
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6489 - loss: 1.0087 - val_accuracy: 0.6794 - val_loss: 0.9121
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6620 - loss: 0.9649 - val_accuracy: 0.7044 - val_loss: 0.8633
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.6709 - loss: 0.9333 - val_accuracy: 0.7012 - val_loss: 0.8564
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6853 - loss: 0.9015 - val_accuracy: 0.7114 - val_loss: 0.8173
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.6923 - loss: 0.8695 - val_accuracy: 0.7252 - val_loss: 0.8123
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7073 - loss: 0.8466 - val_accuracy: 0.7260 - val_loss: 0.7877
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.7111 - loss: 0.8288 - val_accuracy: 0.7386 - val_loss: 0.7637
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.7187 - loss: 0.8152 - val_accuracy: 0.7426 - val_loss: 0.7376
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7203 - loss: 0.7959 - val_accuracy: 0.7514 - val_loss: 0.7208
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - accuracy: 0.7286 - loss: 0.7787 - val_accuracy: 0.7470 - val_loss: 0.7390
Epoch 16/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 6ms/step - accuracy: 0.7293 - loss: 0.7693 - val_accuracy: 0.7488 - val_loss: 0.7255
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.7449 - loss: 0.7421
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.80      0.76      0.78      1000
           1       0.94      0.80      0.86      1000
           2       0.70      0.62      0.66      1000
           3       0.61      0.53      0.57      1000
           4       0.62      0.81      0.70      1000
           5       0.71      0.61      0.66      1000
           6       0.76      0.84      0.80      1000
           7       0.84      0.76      0.80      1000
           8       0.74      0.90      0.81      1000
           9       0.82      0.85      0.84      1000

    accuracy                           0.75     10000
   macro avg       0.75      0.75      0.75     10000
weighted avg       0.75      0.75      0.75     10000

Accuracy Score: 0.7476
Root Mean Square Error: 2.0841305141473265
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 15s 13ms/step - accuracy: 0.3253 - loss: 1.8219 - val_accuracy: 0.5492 - val_loss: 1.2510
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 12s 7ms/step - accuracy: 0.5499 - loss: 1.2608 - val_accuracy: 0.6340 - val_loss: 1.0545
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 8ms/step - accuracy: 0.6184 - loss: 1.0896 - val_accuracy: 0.6722 - val_loss: 0.9526
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.6597 - loss: 0.9809 - val_accuracy: 0.6956 - val_loss: 0.8767
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6779 - loss: 0.9230 - val_accuracy: 0.6956 - val_loss: 0.8610
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.6981 - loss: 0.8641 - val_accuracy: 0.7286 - val_loss: 0.7909
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.7197 - loss: 0.8056 - val_accuracy: 0.7356 - val_loss: 0.7570
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 8ms/step - accuracy: 0.7270 - loss: 0.7798 - val_accuracy: 0.7454 - val_loss: 0.7403
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.7404 - loss: 0.7425 - val_accuracy: 0.7630 - val_loss: 0.7043
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.7514 - loss: 0.7232 - val_accuracy: 0.7556 - val_loss: 0.7052
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 8ms/step - accuracy: 0.7553 - loss: 0.6998 - val_accuracy: 0.7666 - val_loss: 0.6768
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.7686 - loss: 0.6656 - val_accuracy: 0.7604 - val_loss: 0.6915
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 7ms/step - accuracy: 0.7714 - loss: 0.6534 - val_accuracy: 0.7594 - val_loss: 0.6779
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.7677 - loss: 0.6947
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.85      0.73      0.79      1000
           1       0.90      0.87      0.88      1000
           2       0.73      0.60      0.66      1000
           3       0.63      0.52      0.57      1000
           4       0.65      0.79      0.71      1000
           5       0.58      0.77      0.66      1000
           6       0.87      0.76      0.81      1000
           7       0.80      0.81      0.81      1000
           8       0.84      0.88      0.86      1000
           9       0.83      0.87      0.85      1000

    accuracy                           0.76     10000
   macro avg       0.77      0.76      0.76     10000
weighted avg       0.77      0.76      0.76     10000

Accuracy Score: 0.7607
Root Mean Square Error: 1.9216919628285902
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 24s 22ms/step - accuracy: 0.3403 - loss: 1.7736 - val_accuracy: 0.5040 - val_loss: 1.3439
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 26s 10ms/step - accuracy: 0.5700 - loss: 1.2189 - val_accuracy: 0.6326 - val_loss: 1.0553
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.6350 - loss: 1.0457 - val_accuracy: 0.6848 - val_loss: 0.9107
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 9ms/step - accuracy: 0.6727 - loss: 0.9425 - val_accuracy: 0.7044 - val_loss: 0.8654
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.6963 - loss: 0.8642 - val_accuracy: 0.7158 - val_loss: 0.8299
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.7228 - loss: 0.8035 - val_accuracy: 0.7374 - val_loss: 0.7693
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 9ms/step - accuracy: 0.7370 - loss: 0.7563 - val_accuracy: 0.7404 - val_loss: 0.7443
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.7520 - loss: 0.7101 - val_accuracy: 0.7412 - val_loss: 0.7472
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.7668 - loss: 0.6786 - val_accuracy: 0.7540 - val_loss: 0.7210
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.7755 - loss: 0.6409 - val_accuracy: 0.7640 - val_loss: 0.6957
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.7846 - loss: 0.6148 - val_accuracy: 0.7720 - val_loss: 0.6774
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 9ms/step - accuracy: 0.7950 - loss: 0.5804 - val_accuracy: 0.7766 - val_loss: 0.6775
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.7992 - loss: 0.5682 - val_accuracy: 0.7768 - val_loss: 0.6516
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.8081 - loss: 0.5490 - val_accuracy: 0.7768 - val_loss: 0.6541
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 9ms/step - accuracy: 0.8160 - loss: 0.5241 - val_accuracy: 0.7644 - val_loss: 0.7077
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step - accuracy: 0.7643 - loss: 0.7228
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.83      0.78      0.81      1000
           1       0.92      0.83      0.87      1000
           2       0.76      0.55      0.64      1000
           3       0.56      0.62      0.59      1000
           4       0.62      0.84      0.72      1000
           5       0.72      0.65      0.68      1000
           6       0.76      0.88      0.82      1000
           7       0.77      0.81      0.79      1000
           8       0.90      0.83      0.87      1000
           9       0.88      0.80      0.84      1000

    accuracy                           0.76     10000
   macro avg       0.77      0.76      0.76     10000
weighted avg       0.77      0.76      0.76     10000

Accuracy Score: 0.7607
Root Mean Square Error: 1.9230444612644815
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 20s 19ms/step - accuracy: 0.3448 - loss: 1.7797 - val_accuracy: 0.5920 - val_loss: 1.1573
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.5853 - loss: 1.1750 - val_accuracy: 0.6616 - val_loss: 0.9551
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.6548 - loss: 0.9878 - val_accuracy: 0.6736 - val_loss: 0.9303
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.6999 - loss: 0.8635 - val_accuracy: 0.7218 - val_loss: 0.7999
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.7322 - loss: 0.7722 - val_accuracy: 0.7368 - val_loss: 0.7536
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.7431 - loss: 0.7375 - val_accuracy: 0.7596 - val_loss: 0.7000
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.7646 - loss: 0.6732 - val_accuracy: 0.7492 - val_loss: 0.7368
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.7840 - loss: 0.6221 - val_accuracy: 0.7626 - val_loss: 0.6858
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.7967 - loss: 0.5815 - val_accuracy: 0.7684 - val_loss: 0.6635
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.8094 - loss: 0.5437 - val_accuracy: 0.7786 - val_loss: 0.6507
Epoch 11/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.8247 - loss: 0.5019 - val_accuracy: 0.7724 - val_loss: 0.6712
Epoch 12/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 11s 11ms/step - accuracy: 0.8349 - loss: 0.4677 - val_accuracy: 0.7846 - val_loss: 0.6496
Epoch 13/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.8427 - loss: 0.4527 - val_accuracy: 0.7778 - val_loss: 0.6730
Epoch 14/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.8432 - loss: 0.4384 - val_accuracy: 0.7882 - val_loss: 0.6549
Epoch 15/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 10ms/step - accuracy: 0.8545 - loss: 0.4117 - val_accuracy: 0.7630 - val_loss: 0.7135
Epoch 16/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 10s 10ms/step - accuracy: 0.8552 - loss: 0.4018 - val_accuracy: 0.7852 - val_loss: 0.6639
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 5ms/step - accuracy: 0.7670 - loss: 0.7080
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.75      0.83      0.79      1000
           1       0.92      0.83      0.87      1000
           2       0.63      0.69      0.66      1000
           3       0.66      0.59      0.62      1000
           4       0.67      0.77      0.72      1000
           5       0.74      0.64      0.69      1000
           6       0.81      0.82      0.82      1000
           7       0.88      0.76      0.82      1000
           8       0.78      0.90      0.84      1000
           9       0.85      0.84      0.84      1000

    accuracy                           0.77     10000
   macro avg       0.77      0.77      0.77     10000
weighted avg       0.77      0.77      0.77     10000

Accuracy Score: 0.7662
Root Mean Square Error: 2.008233054204616
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
CNN_data_df = pd.DataFrame(CNN_data)
CNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.536 0.471 0.477 1.328 1.510 1.512 29.283
1 CNN_8_nodes 0.666 0.552 0.553 0.970 1.295 1.296 48.320
2 CNN_16_nodes 0.721 0.585 0.577 0.817 1.235 1.257 40.049
3 CNN_32_nodes 0.740 0.602 0.597 0.760 1.198 1.218 32.941
4 CNN_64_nodes 0.789 0.619 0.614 0.630 1.159 1.193 36.042
5 CNN_128_nodes 0.780 0.608 0.595 0.653 1.201 1.257 33.441
6 CNN_256_nodes 0.806 0.611 0.602 0.572 1.247 1.292 61.605
7 CNN_512_nodes 0.775 0.600 0.598 0.659 1.266 1.291 69.849
8 CNN_1024_nodes 0.789 0.599 0.583 0.619 1.308 1.374 120.000
9 CNN_32_4_nodes 0.595 0.540 0.548 1.159 1.289 1.295 50.951
10 CNN_32_8_nodes 0.674 0.589 0.574 0.930 1.198 1.243 78.339
11 CNN_32_16_nodes 0.734 0.613 0.614 0.764 1.129 1.145 44.272
12 CNN_32_32_nodes 0.795 0.613 0.615 0.596 1.210 1.209 37.210
13 CNN_32_64_nodes 0.843 0.610 0.605 0.465 1.291 1.327 44.449
14 CNN_32_128_nodes 0.889 0.647 0.645 0.331 1.197 1.246 55.631
15 CNN_32_256_nodes 0.840 0.658 0.642 0.477 1.102 1.148 55.118
16 CNN_32_512_nodes 0.944 0.661 0.652 0.177 1.381 1.421 113.277
17 CNN_32_1024_nodes 0.888 0.651 0.645 0.336 1.229 1.270 213.050
18 CNN_32_MP 0.721 0.645 0.645 0.814 1.041 1.047 43.365
19 CNN_32_MP_256 0.796 0.658 0.661 0.593 1.039 1.049 54.637
20 CNN_32_DO_256 0.783 0.636 0.632 0.631 1.115 1.149 76.352
21 CNN_32_BN_256 0.952 0.597 0.599 0.148 2.375 2.532 71.470
22 CNN_32_MP_DO_256_MP 0.827 0.710 0.709 0.494 0.881 0.906 74.818
23 CNN_32_MP_DO_256_MP_DO 0.775 0.731 0.730 0.656 0.786 0.792 71.424
24 CNN_32_MP_DO_256_MP_DO_4_MP_DO 0.097 0.097 0.100 2.303 2.303 2.303 23.527
25 CNN_32_MP_DO_256_MP_DO_8_MP_DO 0.098 0.097 0.100 2.303 2.303 2.303 33.550
26 CNN_32_MP_DO_256_MP_DO_16_MP_DO 0.548 0.604 0.597 1.263 1.115 1.146 71.328
27 CNN_32_MP_DO_256_MP_DO_32_MP_DO 0.656 0.685 0.690 0.975 0.903 0.920 85.087
28 CNN_32_MP_DO_256_MP_DO_64_MP_DO 0.679 0.710 0.711 0.914 0.820 0.834 79.452
29 CNN_32_MP_DO_256_MP_DO_128_MP_DO 0.729 0.749 0.748 0.771 0.725 0.741 97.778
30 CNN_32_MP_DO_256_MP_DO_256_MP_DO 0.768 0.759 0.761 0.663 0.678 0.698 107.138
31 CNN_32_MP_DO_256_MP_DO_512_MP_DO 0.810 0.764 0.761 0.537 0.708 0.731 168.257
32 CNN_32_MP_DO_256_MP_DO_1024_MP_DO 0.852 0.785 0.766 0.413 0.664 0.708 151.381
In [ ]:
name = f'DNN_64_32_nodes_BN'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Dense(units=64, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
model.add(layers.BatchNormalization())
model.add(layers.Dense(units=32, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(DNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 8ms/step - accuracy: 0.3912 - loss: 1.9827 - val_accuracy: 0.4554 - val_loss: 1.5867
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.4852 - loss: 1.5040 - val_accuracy: 0.4504 - val_loss: 1.6584
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 6ms/step - accuracy: 0.5177 - loss: 1.4272 - val_accuracy: 0.4654 - val_loss: 1.5463
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - accuracy: 0.5384 - loss: 1.3630 - val_accuracy: 0.4736 - val_loss: 1.5684
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - accuracy: 0.5675 - loss: 1.2862 - val_accuracy: 0.4564 - val_loss: 1.6592
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.5884 - loss: 1.2153 - val_accuracy: 0.4728 - val_loss: 1.5731
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4697 - loss: 1.5600
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.52      0.51      0.51      1000
           1       0.56      0.63      0.59      1000
           2       0.38      0.22      0.28      1000
           3       0.31      0.32      0.31      1000
           4       0.37      0.47      0.42      1000
           5       0.36      0.46      0.40      1000
           6       0.48      0.51      0.49      1000
           7       0.60      0.49      0.54      1000
           8       0.64      0.54      0.58      1000
           9       0.55      0.59      0.57      1000

    accuracy                           0.47     10000
   macro avg       0.48      0.47      0.47     10000
weighted avg       0.48      0.47      0.47     10000

Accuracy Score: 0.4724
Root Mean Square Error: 3.1195031655697996
No description has been provided for this image
No description has been provided for this image
In [ ]:
name = f'DNN_64_32_nodes_DO'
k.clear_session()
model = models.Sequential()
model.add(layers.Input(shape=(32,32,3,)))
model.add(layers.Dense(units=64, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
model.add(layers.Dropout(0.3))
model.add(layers.Dense(units=32, activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.L2(0.001)))
model.add(layers.Flatten())
model.add(layers.Dense(units=10, activation=tf.nn.softmax))
keras.utils.plot_model(model, f"CIFAR10_{name}.png", show_shapes=True)
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
time_start = time.time()
history = model.fit(image_train_norm, label_train_split, epochs=200, batch_size=64, validation_data=(image_val_norm, label_val_split), callbacks=[tf.keras.callbacks.ModelCheckpoint(f"{name}_model.keras",save_best_only=True,save_weights_only=False)
                    ,tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=2)])
time_end = time.time()
preds = model.predict(image_test_norm)
test_pred = model.evaluate(image_test_norm, test_labels)

history_dict = history.history
history_df=pd.DataFrame(history_dict)
plt.subplots(figsize=(16,12))
plt.tight_layout()
display_training_curves(history_df['accuracy'], history_df['val_accuracy'], 'accuracy', 211)
display_training_curves(history_df['loss'], history_df['val_loss'], 'loss', 212)
pred= model.predict(image_test_norm)
pred=np.argmax(pred, axis=1)
print_validation_report(test_labels, pred)
plot_confusion_matrix(test_labels, pred)
add_to_data(DNN_data, name, history, test_pred)
Epoch 1/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 7ms/step - accuracy: 0.3483 - loss: 1.8689 - val_accuracy: 0.4480 - val_loss: 1.5961
Epoch 2/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - accuracy: 0.4717 - loss: 1.5392 - val_accuracy: 0.4714 - val_loss: 1.5363
Epoch 3/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.4932 - loss: 1.4786 - val_accuracy: 0.4750 - val_loss: 1.5178
Epoch 4/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.5074 - loss: 1.4351 - val_accuracy: 0.4784 - val_loss: 1.5061
Epoch 5/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - accuracy: 0.5171 - loss: 1.4151 - val_accuracy: 0.4812 - val_loss: 1.4928
Epoch 6/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.5319 - loss: 1.3738 - val_accuracy: 0.4834 - val_loss: 1.4948
Epoch 7/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.5408 - loss: 1.3529 - val_accuracy: 0.4928 - val_loss: 1.4867
Epoch 8/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - accuracy: 0.5450 - loss: 1.3371 - val_accuracy: 0.4968 - val_loss: 1.4784
Epoch 9/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 5s 5ms/step - accuracy: 0.5580 - loss: 1.3157 - val_accuracy: 0.4878 - val_loss: 1.5010
Epoch 10/200
704/704 ━━━━━━━━━━━━━━━━━━━━ 3s 5ms/step - accuracy: 0.5604 - loss: 1.2960 - val_accuracy: 0.4914 - val_loss: 1.4849
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 3ms/step - accuracy: 0.4948 - loss: 1.4679
313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
Classification Report
              precision    recall  f1-score   support

           0       0.57      0.53      0.55      1000
           1       0.59      0.63      0.61      1000
           2       0.36      0.41      0.38      1000
           3       0.41      0.22      0.29      1000
           4       0.44      0.38      0.41      1000
           5       0.38      0.49      0.43      1000
           6       0.52      0.53      0.52      1000
           7       0.52      0.57      0.54      1000
           8       0.61      0.65      0.63      1000
           9       0.58      0.55      0.57      1000

    accuracy                           0.50     10000
   macro avg       0.50      0.50      0.49     10000
weighted avg       0.50      0.50      0.49     10000

Accuracy Score: 0.4969
Root Mean Square Error: 3.0929435817680218
No description has been provided for this image
No description has been provided for this image
In [ ]:
DNN_data_df = pd.DataFrame(DNN_data)
DNN_data_df
Out[ ]:
model accuracy val_accuracy test_accuracy loss val_loss test_loss time
0 DNN 0.453 0.415 0.417 1.597 1.687 1.670 30.760
1 DNN_8_nodes 0.484 0.448 0.455 1.491 1.582 1.554 28.051
2 DNN_16_nodes 0.499 0.458 0.473 1.440 1.543 1.502 38.472
3 DNN_32_nodes 0.496 0.467 0.476 1.457 1.527 1.489 19.331
4 DNN_64_nodes 0.543 0.485 0.481 1.329 1.500 1.480 32.487
5 DNN_128_nodes 0.547 0.475 0.475 1.319 1.512 1.507 36.486
6 DNN_256_nodes 0.579 0.489 0.484 1.228 1.509 1.514 65.084
7 DNN_512_nodes 0.577 0.488 0.482 1.236 1.532 1.537 90.682
8 DNN_1024_nodes 0.580 0.488 0.478 1.223 1.537 1.536 187.932
9 DNN_64_4_nodes 0.464 0.424 0.444 1.566 1.651 1.605 27.527
10 DNN_64_8_nodes 0.497 0.459 0.471 1.462 1.554 1.523 43.371
11 DNN_64_16_nodes 0.518 0.473 0.489 1.410 1.511 1.479 37.811
12 DNN_64_32_nodes 0.530 0.480 0.492 1.383 1.517 1.486 29.874
13 DNN_64_64_nodes 0.580 0.484 0.488 1.256 1.533 1.514 54.106
14 DNN_64_128_nodes 0.557 0.486 0.489 1.311 1.513 1.503 44.237
15 DNN_64_256_nodes 0.563 0.492 0.500 1.294 1.498 1.477 61.046
16 DNN_64_512_nodes 0.571 0.488 0.490 1.274 1.532 1.511 95.996
17 DNN_64_1024_nodes 0.566 0.484 0.485 1.285 1.511 1.499 168.276
18 DNN_64_32_nodes_BN 0.583 0.473 0.472 1.239 1.573 1.556 33.651
19 DNN_64_32_nodes_DO 0.556 0.491 0.497 1.307 1.485 1.469 50.149
In [ ]:
print('hello world')
time.sleep(600)
print('hello world')
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]: